-
Notifications
You must be signed in to change notification settings - Fork 232
Open
Labels
Milestone
Description
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
| 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.
hieki, melya and danielnitu