export function sleep(ms: number, signal?: AbortSignal): Promise<void> {
return new Promise((resolve, reject) => {
if (signal?.aborted) return reject(signal.reason);
const timer = setTimeout(resolve, ms);
signal?.addEventListener('abort', () => {
clearTimeout(timer);
reject(signal.reason);
}, { once: true });
});
}
// Usage
await sleep(1000);
await sleep(5000, AbortSignal.timeout(2000)); // throws after 2s
Create a free account and build your private vault. Share publicly whenever you want.