@ydbjs/abortable
Version:
Utilities for working with AbortController and AbortSignal in YDB operations.
18 lines • 651 B
JavaScript
export async function abortable(signal, promise) {
if (signal.aborted) {
throw new DOMException('AbortError', { name: 'AbortError', cause: signal.reason });
}
let abortHandler;
return Promise.race([
promise,
new Promise((_, reject) => {
let reason = new DOMException('AbortError', { name: 'AbortError', cause: signal.reason });
abortHandler = () => reject(reason);
signal.addEventListener('abort', abortHandler, { once: true });
}),
])
.finally(() => {
signal.removeEventListener('abort', abortHandler);
});
}
//# sourceMappingURL=index.js.map