happy-server/sources/utils/delay.ts
2025-07-26 01:16:22 -07:00

27 lines
673 B
TypeScript

import { warn } from "./log";
export async function delay(ms: number, signal?: AbortSignal): Promise<void> {
if (!signal) {
return new Promise(resolve => setTimeout(resolve, ms));
}
if (signal.aborted) {
return;
}
await new Promise<void>((resolve) => {
const timeout = setTimeout(resolve, ms);
const abortHandler = () => {
clearTimeout(timeout);
resolve();
};
if (signal.aborted) {
clearTimeout(timeout);
resolve();
} else {
signal.addEventListener('abort', abortHandler, { once: true });
}
});
}