@@ -156,6 +156,19 @@ function proxy (req, resOrSocket, options, onRes, onError) {
156
156
return
157
157
}
158
158
hasError = true
159
+
160
+ if ( err . code === 'ECONNREFUSED' || err . code === 'ENOTFOUND' ) {
161
+ err . statusCode = 503
162
+ } else if ( / H P E _ I N V A L I D / . test ( err . code ) ) {
163
+ err . statusCode = 502
164
+ } else if ( err . code === 'ECONNRESET' ) {
165
+ if ( ! proxyReq . aborted ) {
166
+ err . statusCode = 502
167
+ } else {
168
+ return
169
+ }
170
+ }
171
+
159
172
req . removeListener ( 'close' , abort )
160
173
abort ( )
161
174
onError ( err )
@@ -165,22 +178,7 @@ function proxy (req, resOrSocket, options, onRes, onError) {
165
178
166
179
req
167
180
. pipe ( proxyReq )
168
- . on ( 'error' , err => {
169
- if ( err . code === 'ECONNREFUSED' || err . code === 'ENOTFOUND' ) {
170
- err . statusCode = 503
171
- onProxyError ( err )
172
- } else if ( / H P E _ I N V A L I D / . test ( err . code ) ) {
173
- err . statusCode = 502
174
- onProxyError ( err )
175
- } else if ( err . code === 'ECONNRESET' ) {
176
- if ( ! proxyReq . aborted ) {
177
- err . statusCode = 502
178
- onProxyError ( err )
179
- }
180
- } else {
181
- onProxyError ( err )
182
- }
183
- } )
181
+ . on ( 'error' , onProxyError )
184
182
// NOTE http.ClientRequest emits "socket hang up" error when aborted
185
183
// before having received a response, i.e. there is no need to listen for
186
184
// proxyReq.on('aborted', ...).
@@ -210,9 +208,7 @@ function proxy (req, resOrSocket, options, onRes, onError) {
210
208
}
211
209
212
210
resOrSocket . writeHead ( resOrSocket . statusCode )
213
- proxyRes . on ( 'end' , ( ) => {
214
- resOrSocket . addTrailers ( proxyRes . trailers )
215
- } )
211
+ proxyRes . on ( 'end' , ( ) => resOrSocket . addTrailers ( proxyRes . trailers ) )
216
212
proxyRes
217
213
. on ( 'error' , onProxyError )
218
214
. pipe ( resOrSocket )
0 commit comments