From ebf6d0fa64bf8c7c9afc4e7de87c440bf59f263c Mon Sep 17 00:00:00 2001 From: "Samuel EF. Tinnerholm" Date: Sun, 24 May 2026 17:49:59 +0300 Subject: [PATCH] fix: clean up orderBookResolvers after resolution in probable websocket Fixes #550 --- core/src/exchanges/probable/websocket.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/src/exchanges/probable/websocket.ts b/core/src/exchanges/probable/websocket.ts index 6857ae15..cfaf48c8 100644 --- a/core/src/exchanges/probable/websocket.ts +++ b/core/src/exchanges/probable/websocket.ts @@ -70,15 +70,25 @@ export class ProbableWebSocket { } // Return a promise that resolves on the next orderbook update + let resolver: QueuedPromise; const dataPromise = new Promise((resolve, reject) => { - this.getOrderBookQueue(tokenId).push({ resolve, reject }); + resolver = { resolve, reject }; + this.getOrderBookQueue(tokenId).push(resolver); }); return withWatchTimeout( dataPromise, this.config.watchTimeoutMs ?? DEFAULT_WATCH_TIMEOUT_MS, `watchOrderBook('${tokenId}')`, - ); + ).finally(() => { + const queue = this.orderBookResolvers.get(tokenId); + if (queue) { + const idx = queue.indexOf(resolver!); + if (idx !== -1) { + queue.splice(idx, 1); + } + } + }); } private handleOrderBookUpdate(tokenId: string, data: any) {