diff --git a/packages/sdk/src/sdk.test.ts b/packages/sdk/src/sdk.test.ts index 5f3c627a..5e603f61 100644 --- a/packages/sdk/src/sdk.test.ts +++ b/packages/sdk/src/sdk.test.ts @@ -1991,6 +1991,7 @@ describe("sendAndWaitForCommit", () => { it("surfaces transaction confirmation timeouts with the broadcast hash", async () => { const txHash = hash("a3"); const onSent = vi.fn(); + const sleep = vi.fn(() => Promise.resolve()); const onLifecycle = vi.fn<(event: unknown) => void>(); try { @@ -2008,7 +2009,7 @@ describe("sendAndWaitForCommit", () => { maxConfirmationChecks: 1, onLifecycle, onSent, - sleep: () => Promise.resolve(), + sleep, }, ); expect.fail("Expected sendAndWaitForCommit to reject"); @@ -2023,6 +2024,7 @@ describe("sendAndWaitForCommit", () => { } expect(onSent).toHaveBeenCalledWith(txHash); + expect(sleep).not.toHaveBeenCalled(); expect(onLifecycle.mock.calls.map(([event]) => event)).toMatchObject([ { type: "broadcasted", txHash }, { type: "timeout_after_broadcast", txHash, status: "unknown", checks: 1 }, diff --git a/packages/sdk/src/sdk.ts b/packages/sdk/src/sdk.ts index bafcca10..5d40e567 100644 --- a/packages/sdk/src/sdk.ts +++ b/packages/sdk/src/sdk.ts @@ -250,7 +250,7 @@ export async function sendAndWaitForCommit( lastPollingError = error; } checks += 1; - if (!isPendingStatus(status)) { + if (!isPendingStatus(status) || checks >= maxConfirmationChecks) { break; }