@binance/common 1.2.2 → 1.2.4

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
@@ -568,7 +568,8 @@ var ConfigurationRestAPI = class {
568
568
  proxy: param.proxy && {
569
569
  host: param.proxy.host,
570
570
  port: param.proxy.port,
571
- auth: param.proxy.auth
571
+ ...param.proxy.protocol && { protocol: param.proxy.protocol },
572
+ ...param.proxy.auth && { auth: param.proxy.auth }
572
573
  },
573
574
  httpsAgent: param.httpsAgent ?? false,
574
575
  headers: {
@@ -905,10 +906,24 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
905
906
  * @returns Timer handle
906
907
  */
907
908
  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 });
909
+ let timers = this.connectionTimers.get(connection);
910
+ if (!timers) {
911
+ timers = /* @__PURE__ */ new Set();
912
+ this.connectionTimers.set(connection, timers);
913
+ }
914
+ const timerRecord = { type };
915
+ const wrappedTimeout = () => {
916
+ try {
917
+ callback();
918
+ } finally {
919
+ timers.delete(timerRecord);
920
+ }
921
+ };
922
+ let timer;
923
+ if (type === "timeout") timer = setTimeout(wrappedTimeout, delay2);
924
+ else timer = setInterval(callback, delay2);
925
+ timerRecord.timer = timer;
926
+ timers.add(timerRecord);
912
927
  return timer;
913
928
  }
914
929
  /**
@@ -1170,13 +1185,13 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1170
1185
  this.onMessage(data.toString(), targetConnection);
1171
1186
  });
1172
1187
  ws.on("ping", () => {
1173
- this.logger.info("Received PING from server");
1188
+ this.logger.debug("Received PING from server");
1174
1189
  this.emit("ping");
1175
1190
  ws.pong();
1176
- this.logger.info("Responded PONG to server's PING message");
1191
+ this.logger.debug("Responded PONG to server's PING message");
1177
1192
  });
1178
1193
  ws.on("pong", () => {
1179
- this.logger.info("Received PONG from server");
1194
+ this.logger.debug("Received PONG from server");
1180
1195
  this.emit("pong");
1181
1196
  });
1182
1197
  ws.on("error", (err) => {
@@ -1256,7 +1271,7 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1256
1271
  this.logger.warn("Ping only can be sent when connection is ready.");
1257
1272
  return;
1258
1273
  }
1259
- this.logger.info("Sending PING to all connected Websocket servers.");
1274
+ this.logger.debug("Sending PING to all connected Websocket servers.");
1260
1275
  connectedConnections.forEach((connection) => {
1261
1276
  if (connection.ws) {
1262
1277
  connection.ws.ping();
@@ -1278,7 +1293,7 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1278
1293
  */
1279
1294
  send(payload, id, promiseBased = true, timeout = 5e3, connection) {
1280
1295
  if (!this.isConnected(connection)) {
1281
- const errorMsg = "Send can only be sent when connection is ready.";
1296
+ const errorMsg = "Unable to send message \u2014 connection is not available.";
1282
1297
  this.logger.warn(errorMsg);
1283
1298
  if (promiseBased) return Promise.reject(new Error(errorMsg));
1284
1299
  else throw new Error(errorMsg);
@@ -1294,17 +1309,22 @@ var WebsocketCommon = class _WebsocketCommon extends WebsocketEventEmitter {
1294
1309
  if (promiseBased) {
1295
1310
  return new Promise((resolve, reject) => {
1296
1311
  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
- }
1312
+ const timeoutHandle = setTimeout(() => {
1313
+ if (connectionToUse.pendingRequests.has(id)) {
1314
+ connectionToUse.pendingRequests.delete(id);
1315
+ reject(new Error(`Request timeout for id: ${id}`));
1316
+ }
1317
+ }, timeout);
1318
+ connectionToUse.pendingRequests.set(id, {
1319
+ resolve: (v) => {
1320
+ clearTimeout(timeoutHandle);
1321
+ resolve(v);
1305
1322
  },
1306
- timeout
1307
- );
1323
+ reject: (e) => {
1324
+ clearTimeout(timeoutHandle);
1325
+ reject(e);
1326
+ }
1327
+ });
1308
1328
  });
1309
1329
  }
1310
1330
  }
@@ -1384,13 +1404,13 @@ var WebsocketAPIBase = class extends WebsocketCommon {
1384
1404
  reject(new Error("Websocket connection timed out"));
1385
1405
  }, 1e4);
1386
1406
  this.connectPool(this.prepareURL(this.configuration.wsURL)).then(() => {
1387
- clearTimeout(timeout);
1388
1407
  this.isConnecting = false;
1389
1408
  resolve();
1390
1409
  }).catch((error) => {
1391
- clearTimeout(timeout);
1392
1410
  this.isConnecting = false;
1393
1411
  reject(error);
1412
+ }).finally(() => {
1413
+ clearTimeout(timeout);
1394
1414
  });
1395
1415
  });
1396
1416
  }
@@ -1561,13 +1581,7 @@ var WebsocketStreamsBase = class extends WebsocketCommon {
1561
1581
  const timeout = setTimeout(() => {
1562
1582
  reject(new Error("Websocket connection timed out"));
1563
1583
  }, 1e4);
1564
- this.connectPool(this.prepareURL(streams)).then(() => {
1565
- clearTimeout(timeout);
1566
- resolve();
1567
- }).catch((error) => {
1568
- clearTimeout(timeout);
1569
- reject(error);
1570
- });
1584
+ this.connectPool(this.prepareURL(streams)).then(() => resolve()).catch((error) => reject(error)).finally(() => clearTimeout(timeout));
1571
1585
  });
1572
1586
  }
1573
1587
  /**