From 30146c65cebcca418609fd37ff114a9b07e5e575 Mon Sep 17 00:00:00 2001 From: pleb Date: Sun, 12 Jul 2026 15:53:13 -0700 Subject: [PATCH] Enforce check interval correctly --- src/writeConfirm.ts | 56 ++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/writeConfirm.ts b/src/writeConfirm.ts index 6b8d30a..ef04bea 100644 --- a/src/writeConfirm.ts +++ b/src/writeConfirm.ts @@ -69,29 +69,29 @@ async function waitForEvent( const elapsed = Date.now() - started; const remainingMs = Math.max(1, timeoutMs - elapsed); const queryTimeoutMs = Math.max(200, Math.min(1_000, remainingMs)); - const found = await withTimeout( - new Promise((resolve) => { - let settled = false; - const sub = relay.subscribe([filter], { - onevent: (evt) => { - if (settled) return; - if (evt.id === expectedEventId) { - settled = true; - sub.close(); - resolve(true); - } - }, - oneose: () => { - if (settled) return; - settled = true; - sub.close(); - resolve(false); - }, - }); - }), - queryTimeoutMs, - "write confirm read-after-write query", - ).catch(() => false); + const found = await new Promise((resolve) => { + let settled = false; + let sub: ReturnType | undefined; + const finish = (found: boolean): void => { + if (settled) return; + settled = true; + clearTimeout(timer); + sub?.close(); + resolve(found); + }; + const timer = setTimeout(() => finish(false), queryTimeoutMs); + + sub = relay.subscribe([filter], { + onevent: (evt) => { + if (evt.id === expectedEventId) { + finish(true); + } + }, + oneose: () => { + finish(false); + }, + }); + }); if (found) return true; @@ -142,20 +142,20 @@ export async function runWriteConfirm(input: WriteConfirmInput): Promise