import doAbortable from "./doAbortable.ts"; import AbortError from "./AbortError.ts"; export default function delay(time: number, abortSignal?: AbortSignal): Promise { return doAbortable(abortSignal, abortSignal => { return new Promise((resolve, reject) => { if (abortSignal.aborted) { reject(new AbortError()) } const timeout = setTimeout(resolve, time); abortSignal.addEventListener('abort', () => { clearTimeout(timeout); reject(new AbortError()); }, { once: true }); }); }); }