@@ -166,7 +166,7 @@ module.exports = async function (url, options) {
166
166
167
167
return new Promise ( function ( resolve , reject ) {
168
168
const wrappedFetch = async ( ) => {
169
- let response ;
169
+ let processLastResult = ( ) => { } ;
170
170
while ( ! isResponseTimedOut ( retryOptions ) ) {
171
171
++ attempt ;
172
172
@@ -179,7 +179,8 @@ module.exports = async function (url, options) {
179
179
180
180
try {
181
181
// console.log(`Fetching ${url} attempt ${attempt}`);
182
- response = await fetch ( url , options ) ;
182
+ const response = await fetch ( url , options ) ;
183
+ processLastResult = ( ) => resolve ( response ) ;
183
184
184
185
if ( shouldRetry ( retryOptions , null , response ) ) {
185
186
console . error ( `Retrying in ${ retryOptions . retryInitialDelay } milliseconds, attempt ${ attempt } failed (status ${ response . status } ): ${ response . statusText } ` ) ;
@@ -189,15 +190,15 @@ module.exports = async function (url, options) {
189
190
return resolve ( response ) ;
190
191
}
191
192
} catch ( error ) {
192
- response = { status : error . code || 500 , statusMessage : error . message || "Unknown server error" } ;
193
+ processLastResult = ( ) => reject ( error ) ;
194
+ const response = { status : error . code || 500 , statusMessage : error . message || "Unknown server error" } ;
193
195
if ( ! shouldRetry ( retryOptions , error , response ) ) {
194
196
if ( error . name === 'AbortError' ) {
195
197
return reject ( new FetchError ( `network timeout at ${ url } ` , 'request-timeout' ) ) ;
196
198
} else {
197
199
return reject ( error ) ;
198
200
}
199
201
}
200
-
201
202
console . error ( `Retrying in ${ retryOptions . retryInitialDelay } milliseconds, attempt ${ attempt } error: ${ error . message } ` ) ;
202
203
} finally {
203
204
clearTimeout ( timeoutHandler ) ;
@@ -207,7 +208,7 @@ module.exports = async function (url, options) {
207
208
const waitTime = getRetryDelay ( retryOptions ) ;
208
209
if ( getTimeRemaining ( retryOptions ) < waitTime ) {
209
210
console . error ( `Timeout during retry delay, returning last received response` ) ;
210
- resolve ( response ) ;
211
+ processLastResult ( ) ;
211
212
break ;
212
213
} else if ( waitTime > 0 ) {
213
214
await new Promise ( resolve => setTimeout ( resolve , waitTime ) ) ;
0 commit comments