@@ -18,28 +18,29 @@ public enum DefaultRetryErrorInfoProvider: RetryErrorInfoProvider, Sendable {
18
18
/// - Parameter error: The error to be triaged for retry info
19
19
/// - Returns: `RetryErrorInfo` for the passed error, or `nil` if the error should not be retried.
20
20
public static func errorInfo( for error: Error ) -> RetryErrorInfo ? {
21
- var hint : TimeInterval ?
22
21
let retryableStatusCodes : [ HTTPStatusCode ] = [
23
22
. internalServerError, // 500
24
23
. badGateway, // 502
25
24
. serviceUnavailable, // 503
26
25
. gatewayTimeout, // 504
27
26
]
28
- if let retryAfterString = ( error as? HTTPError ) ? . httpResponse. headers. value ( for: " x-retry-after " ) {
29
- hint = TimeInterval ( retryAfterString)
30
- }
31
27
if let modeledError = error as? ModeledError {
32
28
let type = type ( of: modeledError)
33
29
guard type. isRetryable else { return nil }
34
30
let errorType : RetryErrorType = type. isThrottling ? . throttling : type. fault. retryErrorType
35
- return . init( errorType: errorType, retryAfterHint: hint , isTimeout: false )
31
+ return . init( errorType: errorType, retryAfterHint: nil , isTimeout: false )
36
32
} else if let code = ( error as? HTTPError ) ? . httpResponse. statusCode, retryableStatusCodes. contains ( code) {
37
- return . init( errorType: . serverError, retryAfterHint: hint , isTimeout: false )
33
+ return . init( errorType: . serverError, retryAfterHint: nil , isTimeout: false )
38
34
} else if ( error as NSError ) . domain == NSURLErrorDomain, ( error as NSError ) . code == - 1005 {
39
35
// Domain == "NSURLErrorDomain"
40
36
// NSURLErrorNetworkConnectionLost = -1005
41
37
// "The network connection was lost."
42
38
return . init( errorType: . transient, retryAfterHint: nil , isTimeout: false )
39
+ } else if ( error as NSError ) . domain == NSURLErrorDomain, ( error as NSError ) . code == - 1001 {
40
+ // Domain == "NSURLErrorDomain"
41
+ // NSURLErrorTimedOut = -1001
42
+ // "The request timed out."
43
+ return . init( errorType: . transient, retryAfterHint: nil , isTimeout: true )
43
44
}
44
45
return nil
45
46
}
0 commit comments