abort-utils
Version:
Utility functions to use and combine `AbortSignal` and `AbortController` with Promises
15 lines (14 loc) • 489 B
JavaScript
export function mergeSignals(...signals) {
const controller = new AbortController();
for (const abort of signals) {
const signal = abort instanceof AbortController ? abort.signal : abort;
if (signal?.aborted) {
controller.abort(signal.reason);
return controller.signal;
}
signal?.addEventListener('abort', () => {
controller.abort(signal.reason);
}, { once: true });
}
return controller.signal;
}