Files
safetynet/apps/network-broker/bounded-audit.cjs
T

14 lines
634 B
JavaScript

'use strict';
const {GateError}=require('./http-request-gate.cjs');
// A separate, server-global control budget prevents an unresponsive scan from
// starving its terminal audit while still bounding all unfinished commits.
async function recordLifecycle({admission,deadlineMs,context,code,facts,scope}){
if(!context)return;
let timer;
try {
const original=admission.run(()=>context.reject(code,facts,scope));
return await Promise.race([original,new Promise((_,reject)=>{timer=setTimeout(()=>reject(new GateError('audit-deadline')),deadlineMs);})]);
} finally {clearTimeout(timer);}
}
module.exports={recordLifecycle};