This repository was archived by the owner on Aug 31, 2018. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed
Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -346,7 +346,6 @@ function socketCloseListener() {
346346 // NOTE: It's important to get parser here, because it could be freed by
347347 // the `socketOnData`.
348348 var parser = socket . parser ;
349- req . emit ( 'close' ) ;
350349 if ( req . res && req . res . readable ) {
351350 // Socket closed before we emitted 'end' below.
352351 req . res . emit ( 'aborted' ) ;
@@ -362,6 +361,7 @@ function socketCloseListener() {
362361 req . socket . _hadError = true ;
363362 req . emit ( 'error' , createHangUpError ( ) ) ;
364363 }
364+ req . emit ( 'close' ) ;
365365
366366 // Too bad. That output wasn't getting written.
367367 // This is pretty terrible that it doesn't raise an error.
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+ const common = require ( '../common' ) ;
3+
4+ // This test ensures that the `'close'` event is emitted after the `'error'`
5+ // event when a request is made and the socket is closed before we started to
6+ // receive a response.
7+
8+ const assert = require ( 'assert' ) ;
9+ const http = require ( 'http' ) ;
10+
11+ const server = http . createServer ( common . mustNotCall ( ) ) ;
12+
13+ server . listen ( 0 , common . mustCall ( ( ) => {
14+ const req = http . get ( { port : server . address ( ) . port } , common . mustNotCall ( ) ) ;
15+ let errorEmitted = false ;
16+
17+ req . on ( 'error' , ( err ) => {
18+ errorEmitted = true ;
19+ assert . strictEqual ( err . constructor , Error ) ;
20+ assert . strictEqual ( err . message , 'socket hang up' ) ;
21+ assert . strictEqual ( err . code , 'ECONNRESET' ) ;
22+ } ) ;
23+
24+ req . on ( 'close' , common . mustCall ( ( ) => {
25+ assert . strictEqual ( errorEmitted , true ) ;
26+ server . close ( ) ;
27+ } ) ) ;
28+
29+ req . destroy ( ) ;
30+ } ) ) ;
You can’t perform that action at this time.
0 commit comments