14 lines
634 B
JavaScript
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};
|