Feature Request
Is your feature request related to a problem? Please describe
Currently the retry handler only rethrows when the underlining request throws:
|
try { |
|
await this.nextMiddleware.execute(context); |
|
if (retryAttempts < options.maxRetries && this.isRetry(context.response) && this.isBuffered(context.request, context.options) && options.shouldRetry(options.delay, retryAttempts, context.request, context.options, context.response)) { |
|
++retryAttempts; |
|
setRequestHeader(context.request, context.options, RetryHandler.RETRY_ATTEMPT_HEADER, retryAttempts.toString()); |
|
const delay = this.getDelay(context.response, retryAttempts, options.delay); |
|
await this.sleep(delay); |
|
return await this.executeWithRetry(context, retryAttempts, options); |
|
} else { |
|
return; |
|
} |
|
} catch (error) { |
|
throw error; |
|
} |
This means that a connect timeout will not be retried. This happened in production for us the other day.
{ statusCode: -1, code: "FetchError", message: "request to https://graph.microsoft.com/v1.0/me/mailboxSettings failed, reason: connect ETIMEDOUT 40.126.6.114:443", requestId: null, date: {}, body: "FetchError: request to https://graph.microsoft.com/v1.0/me/mailboxSettings failed, reason: connect ETIMEDOUT 40.126.6.114:443" }
Describe the solution you'd like
The retry middleware should catch the connection timeout and retry.
AB#6270
Feature Request
Is your feature request related to a problem? Please describe
Currently the retry handler only rethrows when the underlining request throws:
msgraph-sdk-javascript/src/middleware/RetryHandler.ts
Lines 176 to 189 in 130f3c0
This means that a connect timeout will not be retried. This happened in production for us the other day.
Describe the solution you'd like
The retry middleware should catch the connection timeout and retry.
AB#6270