@@ -69,7 +69,7 @@ export function ConcurrencyQueue ({ axios, config }) {
69
69
}
70
70
}
71
71
72
- // Request interseptor to queue the request
72
+ // Request interceptor to queue the request
73
73
const requestHandler = request => {
74
74
request . retryCount = request . retryCount || 0
75
75
if ( request . headers . authorization && request . headers . authorization !== undefined ) {
@@ -130,15 +130,16 @@ export function ConcurrencyQueue ({ axios, config }) {
130
130
}
131
131
132
132
// Error handling
133
- let wait = this . config . retryDelay
134
- const response = error . response
133
+ const wait = this . config . retryDelay
134
+ var response = error . response
135
135
if ( ! response ) {
136
136
if ( error . code === 'ECONNABORTED' ) {
137
137
error . response = {
138
138
...error . response ,
139
139
status : 408 ,
140
140
statusText : `timeout of ${ this . config . timeout } ms exceeded`
141
141
}
142
+ response = error . response
142
143
} else {
143
144
return Promise . reject ( responseHandler ( error ) )
144
145
}
@@ -150,38 +151,43 @@ export function ConcurrencyQueue ({ axios, config }) {
150
151
return Promise . reject ( responseHandler ( error ) )
151
152
}
152
153
this . running . shift ( )
153
- wait = 1000
154
- // Cooldown the running requests
154
+ // Cool down the running requests
155
155
delay ( wait )
156
156
error . config . retryCount = networkError
157
157
158
158
return axios ( updateRequestConfig ( error , retryErrorType , wait ) )
159
- } else if ( this . config . retryCondition && this . config . retryCondition ( error ) ) {
160
- retryErrorType = `Error with status: ${ response . status } `
159
+ }
160
+ if ( this . config . retryCondition && this . config . retryCondition ( error ) ) {
161
+ retryErrorType = error . response ? `Error with status: ${ response . status } ` : `Error Code:${ error . code } `
161
162
networkError ++
162
- if ( networkError > this . config . retryLimit ) {
163
- return Promise . reject ( responseHandler ( error ) )
164
- }
165
- if ( this . config . retryDelayOptions ) {
166
- if ( this . config . retryDelayOptions . customBackoff ) {
167
- wait = this . config . retryDelayOptions . customBackoff ( networkError , error )
168
- if ( wait && wait <= 0 ) {
169
- return Promise . reject ( responseHandler ( error ) )
170
- }
171
- } else if ( this . config . retryDelayOptions . base ) {
172
- wait = this . config . retryDelayOptions . base * networkError
163
+ return this . retry ( error , retryErrorType , networkError , wait )
164
+ }
165
+ return Promise . reject ( responseHandler ( error ) )
166
+ }
167
+
168
+ this . retry = ( error , retryErrorType , retryCount , waittime ) => {
169
+ let delaytime = waittime
170
+ if ( retryCount > this . config . retryLimit ) {
171
+ return Promise . reject ( responseHandler ( error ) )
172
+ }
173
+ if ( this . config . retryDelayOptions ) {
174
+ if ( this . config . retryDelayOptions . customBackoff ) {
175
+ delaytime = this . config . retryDelayOptions . customBackoff ( retryCount , error )
176
+ if ( delaytime && delaytime <= 0 ) {
177
+ return Promise . reject ( responseHandler ( error ) )
173
178
}
174
- } else {
175
- wait = this . config . retryDelay
179
+ } else if ( this . config . retryDelayOptions . base ) {
180
+ delaytime = this . config . retryDelayOptions . base * retryCount
176
181
}
177
- error . config . retryCount = networkError
178
- return new Promise ( function ( resolve ) {
179
- return setTimeout ( function ( ) {
180
- return resolve ( axios ( updateRequestConfig ( error , retryErrorType , wait ) ) )
181
- } , wait )
182
- } )
182
+ } else {
183
+ delaytime = this . config . retryDelay
183
184
}
184
- return Promise . reject ( responseHandler ( error ) )
185
+ error . config . retryCount = retryCount
186
+ return new Promise ( function ( resolve ) {
187
+ return setTimeout ( function ( ) {
188
+ return resolve ( axios ( updateRequestConfig ( error , retryErrorType , delaytime ) ) )
189
+ } , delaytime )
190
+ } )
185
191
}
186
192
187
193
this . interceptors = {
0 commit comments