88 IDependencyGraphPayload ,
99 IWorkloadMetadataPayload ,
1010 IResponseWithAttempts ,
11+ IRequestError ,
1112} from './types' ;
1213import { getProxyAgent } from './proxy' ;
1314
@@ -73,10 +74,6 @@ async function retryRequest(verb: NeedleHttpVerbs, url: string, payload: object)
7374 const retry = {
7475 attempts : 3 ,
7576 intervalSeconds : 2 ,
76- networkErrorMessages : [
77- 'socket hang up' ,
78- 'Client network socket disconnected before secure TLS connection was established' ,
79- ] ,
8077 } ;
8178 const options : NeedleOptions = {
8279 json : true ,
@@ -97,11 +94,7 @@ async function retryRequest(verb: NeedleHttpVerbs, url: string, payload: object)
9794 break ;
9895 }
9996 } catch ( err ) {
100- if ( ! (
101- err . code === 'ECONNRESET' &&
102- retry . networkErrorMessages . includes ( err . message ) &&
103- stillHaveRetries
104- ) ) {
97+ if ( ! shouldRetryRequest ( err , stillHaveRetries ) ) {
10598 throw err ;
10699 }
107100 }
@@ -114,3 +107,24 @@ async function retryRequest(verb: NeedleHttpVerbs, url: string, payload: object)
114107
115108 return { response, attempt} ;
116109}
110+
111+ function shouldRetryRequest ( err : IRequestError , stillHaveRetries : boolean ) : boolean {
112+ const networkErrorMessages : string [ ] = [
113+ 'socket hang up' ,
114+ 'Client network socket disconnected before secure TLS connection was established' ,
115+ ] ;
116+
117+ if ( ! stillHaveRetries ) {
118+ return false ;
119+ }
120+
121+ if ( err . code === 'ECONNRESET' && networkErrorMessages . includes ( err . message ) ) {
122+ return true ;
123+ }
124+
125+ if ( err . code === 'EAI_AGAIN' ) {
126+ return true ;
127+ }
128+
129+ return false ;
130+ }
0 commit comments