Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
13 lines
413 B
TypeScript
13 lines
413 B
TypeScript
export async function abortableDelay(delayMs: number, signal?: AbortSignal): Promise<void> {
|
|
if (signal?.aborted) return;
|
|
await new Promise<void>((resolve) => {
|
|
const finish = () => {
|
|
clearTimeout(timer);
|
|
signal?.removeEventListener("abort", finish);
|
|
resolve();
|
|
};
|
|
const timer = setTimeout(finish, delayMs);
|
|
signal?.addEventListener("abort", finish, { once: true });
|
|
});
|
|
}
|