10 lines
478 B
JavaScript
10 lines
478 B
JavaScript
/** Request completion is normal; premature response closure cancels dependent work. */
|
|
export function requestLifetime(req, res) {
|
|
const controller = new AbortController();
|
|
const abort = () => controller.abort();
|
|
const closed = () => {if (!res.writableFinished) abort();};
|
|
req.once('aborted',abort);res.once('close',closed);
|
|
if(req.aborted || res.destroyed) abort();
|
|
return {signal:controller.signal,dispose(){req.off('aborted',abort);res.off('close',closed);}};
|
|
}
|