From 3109494c60656ae757b84d9b7030129bf6e56cde Mon Sep 17 00:00:00 2001 From: Sjoerd Bolten Date: Tue, 6 Aug 2024 00:39:41 +0200 Subject: [PATCH] feat(http): better handle ECONNRESET errors --- src/lib/http/HttpManager.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/lib/http/HttpManager.ts b/src/lib/http/HttpManager.ts index 731609c..7af894f 100644 --- a/src/lib/http/HttpManager.ts +++ b/src/lib/http/HttpManager.ts @@ -119,6 +119,7 @@ export class HttpClient { requestConfig.retryAttempt ||= 0; const isRateLimited = err.response && err.response.status === 429; + const isConnectionReset = (err as AxiosError).code === 'ECONNRESET'; if (isRateLimited) { if (this.config.logRetry) { @@ -136,6 +137,16 @@ export class HttpClient { await sleep(retryAfter * 1_000); requestConfig.retryAttempt = 0; + } else if (isConnectionReset) { + await sleep(1_000 * (requestConfig.retryAttempt + 1)); + + requestConfig.retryAttempt += 1; + + if (this.config.debug) { + console.log( + `(${requestConfig.retryAttempt}/${this.maxRetryAttempts}) retry ${requestConfig.url} - ${err}` + ); + } } else { await sleep(1_000);