diff --git a/src/utils/promise.ts b/src/utils/promise.ts index 5b0b310..21c2f1f 100644 --- a/src/utils/promise.ts +++ b/src/utils/promise.ts @@ -1,4 +1,4 @@ -export function cancellablePromise( +export async function cancellablePromise( signal: AbortSignal, promise: Promise ) { @@ -6,9 +6,13 @@ export function cancellablePromise( return Promise.race([ new Promise((_resolve, reject) => { - signal.addEventListener("abort", () => { - reject(signal.reason); - }); + signal.addEventListener( + "abort", + () => { + reject(signal.reason); + }, + { once: true, passive: true } + ); }), promise, ]);