@@ -7,29 +7,36 @@ const { get, createServer } = require('http');
7
7
// res.writable should not be set to false after it has finished sending
8
8
// Ref: https://github.com/nodejs/node/issues/15029
9
9
10
+ let internal ;
10
11
let external ;
11
12
12
- // Http server
13
- const internal = createServer ( ( req , res ) => {
14
- res . writeHead ( 200 ) ;
15
- setImmediate ( common . mustCall ( ( ) => {
16
- external . abort ( ) ;
17
- res . end ( 'Hello World\n' ) ;
18
- } ) ) ;
19
- } ) . listen ( 0 ) ;
20
-
21
13
// Proxy server
22
14
const server = createServer ( common . mustCall ( ( req , res ) => {
23
15
get ( `http://127.0.0.1:${ internal . address ( ) . port } ` , common . mustCall ( ( inner ) => {
24
- res . on ( 'close' , common . mustCall ( ( ) => {
16
+ const listener = common . mustCall ( ( ) => {
25
17
assert . strictEqual ( res . writable , true ) ;
26
- } ) ) ;
18
+ } ) ;
19
+
20
+ // on CentOS 5, 'finish' is emitted
21
+ res . on ( 'finish' , listener ) ;
22
+ // everywhere else, 'close' is emitted
23
+ res . on ( 'close' , listener ) ;
24
+
27
25
inner . pipe ( res ) ;
28
26
} ) ) ;
29
27
} ) ) . listen ( 0 , ( ) => {
30
- external = get ( `http://127.0.0.1:${ server . address ( ) . port } ` ) ;
31
- external . on ( 'error' , common . mustCall ( ( err ) => {
32
- server . close ( ) ;
33
- internal . close ( ) ;
34
- } ) ) ;
28
+ // Http server
29
+ internal = createServer ( ( req , res ) => {
30
+ res . writeHead ( 200 ) ;
31
+ setImmediate ( common . mustCall ( ( ) => {
32
+ external . abort ( ) ;
33
+ res . end ( 'Hello World\n' ) ;
34
+ } ) ) ;
35
+ } ) . listen ( 0 , ( ) => {
36
+ external = get ( `http://127.0.0.1:${ server . address ( ) . port } ` ) ;
37
+ external . on ( 'error' , common . mustCall ( ( err ) => {
38
+ server . close ( ) ;
39
+ internal . close ( ) ;
40
+ } ) ) ;
41
+ } ) ;
35
42
} ) ;
0 commit comments