@graphql-hive/gateway-abort-signal-any
Version:
23 lines (20 loc) • 528 B
JavaScript
;
function abortSignalAny(iterable) {
const signals = Array.from(iterable);
const aborted = signals.find((s) => s.aborted);
if (aborted) {
return aborted;
}
const ctrl = new AbortController();
function abort(event) {
ctrl.abort(event.target.reason);
for (const signal of signals) {
signal.removeEventListener("abort", abort);
}
}
for (const signal of signals) {
signal.addEventListener("abort", abort);
}
return ctrl.signal;
}
exports.abortSignalAny = abortSignalAny;