export const awaitWithAbortSignal = async (promiseArg: Promise, signalArg: AbortSignal): Promise => { signalArg.throwIfAborted(); let rejectAbort!: (reasonArg: unknown) => void; const aborted = new Promise((_resolve, reject) => { rejectAbort = reject; }); const onAbort = (): void => rejectAbort(signalArg.reason); signalArg.addEventListener('abort', onAbort, { once: true }); try { return await Promise.race([promiseArg, aborted]); } finally { signalArg.removeEventListener('abort', onAbort); } };