export async function abortableDelay(delayMs: number, signal?: AbortSignal): Promise { if (signal?.aborted) return; await new Promise((resolve) => { const finish = () => { clearTimeout(timer); signal?.removeEventListener("abort", finish); resolve(); }; const timer = setTimeout(finish, delayMs); signal?.addEventListener("abort", finish, { once: true }); }); }