From 23922cf92f8e13fcd65c028ccf3de8c5b0bbdcbc Mon Sep 17 00:00:00 2001 From: joshua-spacetime Date: Thu, 19 Feb 2026 09:52:56 -0800 Subject: [PATCH] Remove Promise.withResolvers; unsupported in Node 20.x --- .../src/sdk/db_connection_impl.ts | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/crates/bindings-typescript/src/sdk/db_connection_impl.ts b/crates/bindings-typescript/src/sdk/db_connection_impl.ts index 912b109c205..8c1a5888741 100644 --- a/crates/bindings-typescript/src/sdk/db_connection_impl.ts +++ b/crates/bindings-typescript/src/sdk/db_connection_impl.ts @@ -97,6 +97,22 @@ export type DbConnectionConfig = { type ProcedureCallback = (result: ProcedureResultMessage['result']) => void; +type Deferred = { + promise: Promise; + resolve: (value: T | PromiseLike) => void; + reject: (reason?: unknown) => void; +}; + +function createDeferred(): Deferred { + let resolve!: (value: T | PromiseLike) => void; + let reject!: (reason?: unknown) => void; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve, reject }; +} + export class DbConnectionImpl implements DbContext { @@ -794,7 +810,7 @@ export class DbConnectionImpl argsBuffer: Uint8Array, reducerArgs?: object ): Promise { - const { promise, resolve, reject } = Promise.withResolvers(); + const { promise, resolve, reject } = createDeferred(); const requestId = this.#getNextRequestId(); const message = ClientMessage.CallReducer({ reducer: reducerName, @@ -858,7 +874,7 @@ export class DbConnectionImpl procedureName: string, argsBuffer: Uint8Array ): Promise { - const { promise, resolve, reject } = Promise.withResolvers(); + const { promise, resolve, reject } = createDeferred(); const requestId = this.#getNextRequestId(); const message = ClientMessage.CallProcedure({ procedure: procedureName,