@ydbjs/abortable
Version:
Utilities for working with AbortController and AbortSignal in YDB operations.
16 lines • 510 B
JavaScript
export async function abortable(signal, promise) {
signal.throwIfAborted();
let abortHandler;
let abortPromise = new Promise((_, reject) => {
abortHandler = () => reject(signal.reason);
signal.addEventListener('abort', abortHandler, { once: true });
});
try {
return await Promise.race([promise, abortPromise]);
}
finally {
if (abortHandler)
signal.removeEventListener('abort', abortHandler);
}
}
//# sourceMappingURL=abortable.js.map