@binance/common 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -721,6 +721,10 @@ declare class WebsocketEventEmitter {
721
721
  off(event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong', listener: (...args: any[]) => void): void;
722
722
  protected emit(event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong', ...args: any[]): void;
723
723
  }
724
+ interface TimerRecord {
725
+ timer?: NodeJS.Timeout;
726
+ type: 'timeout' | 'interval';
727
+ }
724
728
  interface WebsocketConnection {
725
729
  id: string;
726
730
  reconnectionPending: boolean;
@@ -744,7 +748,7 @@ declare class WebsocketCommon extends WebsocketEventEmitter {
744
748
  private static readonly MAX_CONNECTION_DURATION;
745
749
  private readonly connectionQueue;
746
750
  private queueProcessing;
747
- private connectionTimers;
751
+ protected connectionTimers: Map<WebSocketClient, Set<TimerRecord>>;
748
752
  private mode;
749
753
  private poolSize;
750
754
  private roundRobinIndex;
@@ -794,13 +798,13 @@ declare class WebsocketCommon extends WebsocketEventEmitter {
794
798
  * @param type Timer type ('timeout' or 'interval')
795
799
  * @returns Timer handle
796
800
  */
797
- private scheduleTimer;
801
+ protected scheduleTimer(connection: WebSocketClient, callback: () => void, delay: number, type?: 'timeout' | 'interval'): NodeJS.Timeout;
798
802
  /**
799
803
  * Clears all timers associated with a WebSocket connection.
800
804
  * @param connection - The WebSocket client instance to clear timers for.
801
805
  * @returns void
802
806
  */
803
- private clearTimers;
807
+ protected clearTimers(connection: WebSocketClient): void;
804
808
  /**
805
809
  * Processes the connection queue, reconnecting or renewing connections as needed.
806
810
  * This method is responsible for iterating through the connection queue and initiating
@@ -1079,4 +1083,4 @@ interface WebsocketStream<T> {
1079
1083
  */
1080
1084
  declare function createStreamHandler<T>(websocketBase: WebsocketAPIBase | WebsocketStreamsBase, streamOrId: string, id?: string): WebsocketStream<T>;
1081
1085
 
1082
- export { ALGO_REST_API_PROD_URL, AUTO_INVEST_REST_API_PROD_URL, type AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, type ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, type RequestArgs, RequiredError, type RestApiRateLimit, type RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, type SendMessageOptions, ServerError, TimeUnit, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, type WebsocketApiRateLimit, type WebsocketApiResponse, WebsocketCommon, type WebsocketConnection, WebsocketEventEmitter, type WebsocketSendMsgConfig, type WebsocketSendMsgOptions, type WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, parseCustomHeaders, parseRateLimitHeaders, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setFlattenedQueryParams, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
1086
+ export { ALGO_REST_API_PROD_URL, AUTO_INVEST_REST_API_PROD_URL, type AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, type ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, type RequestArgs, RequiredError, type RestApiRateLimit, type RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, type SendMessageOptions, ServerError, TimeUnit, type TimerRecord, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, type WebsocketApiRateLimit, type WebsocketApiResponse, WebsocketCommon, type WebsocketConnection, WebsocketEventEmitter, type WebsocketSendMsgConfig, type WebsocketSendMsgOptions, type WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, parseCustomHeaders, parseRateLimitHeaders, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setFlattenedQueryParams, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
package/dist/index.d.ts CHANGED
@@ -721,6 +721,10 @@ declare class WebsocketEventEmitter {
721
721
  off(event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong', listener: (...args: any[]) => void): void;
722
722
  protected emit(event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong', ...args: any[]): void;
723
723
  }
724
+ interface TimerRecord {
725
+ timer?: NodeJS.Timeout;
726
+ type: 'timeout' | 'interval';
727
+ }
724
728
  interface WebsocketConnection {
725
729
  id: string;
726
730
  reconnectionPending: boolean;
@@ -744,7 +748,7 @@ declare class WebsocketCommon extends WebsocketEventEmitter {
744
748
  private static readonly MAX_CONNECTION_DURATION;
745
749
  private readonly connectionQueue;
746
750
  private queueProcessing;
747
- private connectionTimers;
751
+ protected connectionTimers: Map<WebSocketClient, Set<TimerRecord>>;
748
752
  private mode;
749
753
  private poolSize;
750
754
  private roundRobinIndex;
@@ -794,13 +798,13 @@ declare class WebsocketCommon extends WebsocketEventEmitter {
794
798
  * @param type Timer type ('timeout' or 'interval')
795
799
  * @returns Timer handle
796
800
  */
797
- private scheduleTimer;
801
+ protected scheduleTimer(connection: WebSocketClient, callback: () => void, delay: number, type?: 'timeout' | 'interval'): NodeJS.Timeout;
798
802
  /**
799
803
  * Clears all timers associated with a WebSocket connection.
800
804
  * @param connection - The WebSocket client instance to clear timers for.
801
805
  * @returns void
802
806
  */
803
- private clearTimers;
807
+ protected clearTimers(connection: WebSocketClient): void;
804
808
  /**
805
809
  * Processes the connection queue, reconnecting or renewing connections as needed.
806
810
  * This method is responsible for iterating through the connection queue and initiating
@@ -1079,4 +1083,4 @@ interface WebsocketStream<T> {
1079
1083
  */
1080
1084
  declare function createStreamHandler<T>(websocketBase: WebsocketAPIBase | WebsocketStreamsBase, streamOrId: string, id?: string): WebsocketStream<T>;
1081
1085
 
1082
- export { ALGO_REST_API_PROD_URL, AUTO_INVEST_REST_API_PROD_URL, type AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, type ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, type RequestArgs, RequiredError, type RestApiRateLimit, type RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, type SendMessageOptions, ServerError, TimeUnit, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, type WebsocketApiRateLimit, type WebsocketApiResponse, WebsocketCommon, type WebsocketConnection, WebsocketEventEmitter, type WebsocketSendMsgConfig, type WebsocketSendMsgOptions, type WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, parseCustomHeaders, parseRateLimitHeaders, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setFlattenedQueryParams, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
1086
+ export { ALGO_REST_API_PROD_URL, AUTO_INVEST_REST_API_PROD_URL, type AxiosRequestArgs, BadRequestError, C2C_REST_API_PROD_URL, CONVERT_REST_API_PROD_URL, COPY_TRADING_REST_API_PROD_URL, CRYPTO_LOAN_REST_API_PROD_URL, ConfigurationRestAPI, ConfigurationWebsocketAPI, ConfigurationWebsocketStreams, ConnectorClientError, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_COIN_FUTURES_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_OPTIONS_REST_API_PROD_URL, DERIVATIVES_TRADING_OPTIONS_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_PRO_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_REST_API_TESTNET_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_PORTFOLIO_MARGIN_WS_STREAMS_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_REST_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_API_TESTNET_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_PROD_URL, DERIVATIVES_TRADING_USDS_FUTURES_WS_STREAMS_TESTNET_URL, DUAL_INVESTMENT_REST_API_PROD_URL, FIAT_REST_API_PROD_URL, ForbiddenError, GIFT_CARD_REST_API_PROD_URL, LogLevel, Logger, MARGIN_TRADING_REST_API_PROD_URL, MARGIN_TRADING_RISK_WS_STREAMS_PROD_URL, MARGIN_TRADING_WS_STREAMS_PROD_URL, MINING_REST_API_PROD_URL, NFT_REST_API_PROD_URL, NetworkError, NotFoundError, type ObjectType, PAY_REST_API_PROD_URL, REBATE_REST_API_PROD_URL, RateLimitBanError, type RequestArgs, RequiredError, type RestApiRateLimit, type RestApiResponse, SIMPLE_EARN_REST_API_PROD_URL, SPOT_REST_API_MARKET_URL, SPOT_REST_API_PROD_URL, SPOT_REST_API_TESTNET_URL, SPOT_WS_API_PROD_URL, SPOT_WS_API_TESTNET_URL, SPOT_WS_STREAMS_MARKET_URL, SPOT_WS_STREAMS_PROD_URL, SPOT_WS_STREAMS_TESTNET_URL, STAKING_REST_API_PROD_URL, SUB_ACCOUNT_REST_API_PROD_URL, type SendMessageOptions, ServerError, TimeUnit, type TimerRecord, TooManyRequestsError, UnauthorizedError, VIP_LOAN_REST_API_PROD_URL, WALLET_REST_API_PROD_URL, WebsocketAPIBase, type WebsocketApiRateLimit, type WebsocketApiResponse, WebsocketCommon, type WebsocketConnection, WebsocketEventEmitter, type WebsocketSendMsgConfig, type WebsocketSendMsgOptions, type WebsocketStream, WebsocketStreamsBase, assertParamExists, buildQueryString, buildUserAgent, buildWebsocketAPIMessage, clearSignerCache, createStreamHandler, delay, getSignature, getTimestamp, httpRequestFunction, normalizeScientificNumbers, parseCustomHeaders, parseRateLimitHeaders, randomString, removeEmptyValue, replaceWebsocketStreamsPlaceholders, sanitizeHeaderValue, sendRequest, setFlattenedQueryParams, setSearchParams, shouldRetryRequest, sortObject, toPathString, validateTimeUnit };
package/dist/index.js CHANGED
@@ -905,10 +905,24 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
905
905
  * @returns Timer handle
906
906
  */
907
907
  scheduleTimer(connection, callback, delay2, type = "timeout") {
908
- const timer = type === "timeout" ? setTimeout(callback, delay2) : setInterval(callback, delay2);
909
- if (!this.connectionTimers.has(connection))
910
- this.connectionTimers.set(connection, /* @__PURE__ */ new Set());
911
- this.connectionTimers.get(connection)?.add({ timer, type });
908
+ let timers = this.connectionTimers.get(connection);
909
+ if (!timers) {
910
+ timers = /* @__PURE__ */ new Set();
911
+ this.connectionTimers.set(connection, timers);
912
+ }
913
+ const timerRecord = { type };
914
+ const wrappedTimeout = () => {
915
+ try {
916
+ callback();
917
+ } finally {
918
+ timers.delete(timerRecord);
919
+ }
920
+ };
921
+ let timer;
922
+ if (type === "timeout") timer = setTimeout(wrappedTimeout, delay2);
923
+ else timer = setInterval(callback, delay2);
924
+ timerRecord.timer = timer;
925
+ timers.add(timerRecord);
912
926
  return timer;
913
927
  }
914
928
  /**
@@ -1170,13 +1184,13 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1170
1184
  this.onMessage(data.toString(), targetConnection);
1171
1185
  });
1172
1186
  ws.on("ping", () => {
1173
- this.logger.info("Received PING from server");
1187
+ this.logger.debug("Received PING from server");
1174
1188
  this.emit("ping");
1175
1189
  ws.pong();
1176
- this.logger.info("Responded PONG to server's PING message");
1190
+ this.logger.debug("Responded PONG to server's PING message");
1177
1191
  });
1178
1192
  ws.on("pong", () => {
1179
- this.logger.info("Received PONG from server");
1193
+ this.logger.debug("Received PONG from server");
1180
1194
  this.emit("pong");
1181
1195
  });
1182
1196
  ws.on("error", (err) => {
@@ -1256,7 +1270,7 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1256
1270
  this.logger.warn("Ping only can be sent when connection is ready.");
1257
1271
  return;
1258
1272
  }
1259
- this.logger.info("Sending PING to all connected Websocket servers.");
1273
+ this.logger.debug("Sending PING to all connected Websocket servers.");
1260
1274
  connectedConnections.forEach((connection) => {
1261
1275
  if (connection.ws) {
1262
1276
  connection.ws.ping();
@@ -1278,7 +1292,7 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1278
1292
  */
1279
1293
  send(payload, id, promiseBased = true, timeout = 5e3, connection) {
1280
1294
  if (!this.isConnected(connection)) {
1281
- const errorMsg = "Send can only be sent when connection is ready.";
1295
+ const errorMsg = "Unable to send message \u2014 connection is not available.";
1282
1296
  this.logger.warn(errorMsg);
1283
1297
  if (promiseBased) return Promise.reject(new Error(errorMsg));
1284
1298
  else throw new Error(errorMsg);
@@ -1294,17 +1308,22 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1294
1308
  if (promiseBased) {
1295
1309
  return new Promise((resolve, reject) => {
1296
1310
  if (!id) return reject(new Error("id is required for promise-based sending."));
1297
- connectionToUse.pendingRequests.set(id, { resolve, reject });
1298
- this.scheduleTimer(
1299
- connectionToUse.ws,
1300
- () => {
1301
- if (connectionToUse.pendingRequests.has(id)) {
1302
- connectionToUse.pendingRequests.delete(id);
1303
- reject(new Error(`Request timeout for id: ${id}`));
1304
- }
1311
+ const timeoutHandle = setTimeout(() => {
1312
+ if (connectionToUse.pendingRequests.has(id)) {
1313
+ connectionToUse.pendingRequests.delete(id);
1314
+ reject(new Error(`Request timeout for id: ${id}`));
1315
+ }
1316
+ }, timeout);
1317
+ connectionToUse.pendingRequests.set(id, {
1318
+ resolve: (v) => {
1319
+ clearTimeout(timeoutHandle);
1320
+ resolve(v);
1305
1321
  },
1306
- timeout
1307
- );
1322
+ reject: (e) => {
1323
+ clearTimeout(timeoutHandle);
1324
+ reject(e);
1325
+ }
1326
+ });
1308
1327
  });
1309
1328
  }
1310
1329
  }
@@ -1384,13 +1403,13 @@ var WebsocketAPIBase = class extends WebsocketCommon {
1384
1403
  reject(new Error("Websocket connection timed out"));
1385
1404
  }, 1e4);
1386
1405
  this.connectPool(this.prepareURL(this.configuration.wsURL)).then(() => {
1387
- clearTimeout(timeout);
1388
1406
  this.isConnecting = false;
1389
1407
  resolve();
1390
1408
  }).catch((error) => {
1391
- clearTimeout(timeout);
1392
1409
  this.isConnecting = false;
1393
1410
  reject(error);
1411
+ }).finally(() => {
1412
+ clearTimeout(timeout);
1394
1413
  });
1395
1414
  });
1396
1415
  }
@@ -1561,13 +1580,7 @@ var WebsocketStreamsBase = class extends WebsocketCommon {
1561
1580
  const timeout = setTimeout(() => {
1562
1581
  reject(new Error("Websocket connection timed out"));
1563
1582
  }, 1e4);
1564
- this.connectPool(this.prepareURL(streams)).then(() => {
1565
- clearTimeout(timeout);
1566
- resolve();
1567
- }).catch((error) => {
1568
- clearTimeout(timeout);
1569
- reject(error);
1570
- });
1583
+ this.connectPool(this.prepareURL(streams)).then(() => resolve()).catch((error) => reject(error)).finally(() => clearTimeout(timeout));
1571
1584
  });
1572
1585
  }
1573
1586
  /**