authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-02-03 03:44:37-08:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-02-03 03:55:50-08:00
log24465d155378c4b617a658a27385f1da2e381d90
treed10e4ad1564bab38ac0dbff6b5ab06a08b2ada2b
parentfb973bb80728e2a703b326d99d295ad881e11d96
signature Signed by SSH key SHA256:xbd+BjjhyBfwk7GVoURf9Yx0gzDerHbvYv7SddNWmAs

feat(lib/async): delay now works for long periods of time


1 files changed, 10 insertions(+), 2 deletions(-)

lib/async.ts+10-2
......@@ -238,9 +238,17 @@ export function makeCancelable<T>(
238238/** wait `ms` milliseconds, then resolve. can be cancelled. */
239239export function delay(ms: number): Cancelable<void> {
240240 let t: ts.Timer | null = null;
241 const maxTimer = 0x7FFFFFFF;
241242 return makeCancelable(
242 new Promise((resolve) => {
243 t = globalThis.setTimeout(() => (t = null, resolve()), ms);
243 new Promise(function tick(resolve) {
244 if (ms <= maxTimer) {
245 t = setTimeout(() => (t = null, resolve()), ms);
246 } else {
247 t = setTimeout(() => {
248 ms -= maxTimer;
249 tick(resolve);
250 }, maxTimer);
251 }
244252 }),
245253 () => {
246254 if (t != null) clearTimeout(t);