@@ -9,7 +9,9 @@ if (!common.hasCrypto)
9
9
// secure context is changed.
10
10
11
11
const assert = require ( 'assert' ) ;
12
+ const events = require ( 'events' ) ;
12
13
const https = require ( 'https' ) ;
14
+ const timers = require ( 'timers/promises' ) ;
13
15
const fixtures = require ( '../common/fixtures' ) ;
14
16
const credentialOptions = [
15
17
{
@@ -43,10 +45,10 @@ server.listen(0, common.mustCall(() => {
43
45
const { port } = server . address ( ) ;
44
46
const firstRequest = makeRequest ( port , 1 ) ;
45
47
46
- async function makeRemainingRequests ( ) {
48
+ ( async function makeRemainingRequests ( ) {
47
49
// Wait until the first request is guaranteed to have been handled.
48
- if ( ! firstResponse ) {
49
- return setImmediate ( makeRemainingRequests ) ;
50
+ while ( ! firstResponse ) {
51
+ await timers . setImmediate ( ) ;
50
52
}
51
53
52
54
assert . strictEqual ( await makeRequest ( port , 2 ) , 'success' ) ;
@@ -56,53 +58,38 @@ server.listen(0, common.mustCall(() => {
56
58
const errorMessageRegex = common . hasOpenSSL3 ?
57
59
/ ^ E r r o r : s e l f - s i g n e d c e r t i f i c a t e $ / :
58
60
/ ^ E r r o r : s e l f s i g n e d c e r t i f i c a t e $ / ;
59
- await assert . rejects ( async ( ) => {
60
- await makeRequest ( port , 3 ) ;
61
- } , errorMessageRegex ) ;
61
+ await assert . rejects ( makeRequest ( port , 3 ) , errorMessageRegex ) ;
62
62
63
63
server . setSecureContext ( credentialOptions [ 0 ] ) ;
64
64
assert . strictEqual ( await makeRequest ( port , 4 ) , 'success' ) ;
65
65
66
66
server . setSecureContext ( credentialOptions [ 1 ] ) ;
67
67
firstResponse . end ( 'fun!' ) ;
68
- await assert . rejects ( async ( ) => {
69
- await makeRequest ( port , 5 ) ;
70
- } , errorMessageRegex ) ;
68
+ await assert . rejects ( makeRequest ( port , 5 ) , errorMessageRegex ) ;
71
69
72
70
assert . strictEqual ( await firstRequest , 'multi-request-success-fun!' ) ;
73
71
server . close ( ) ;
74
- }
75
-
76
- makeRemainingRequests ( ) ;
72
+ } ) ( ) . then ( common . mustCall ( ) ) ;
77
73
} ) ) ;
78
74
79
- function makeRequest ( port , id ) {
80
- return new Promise ( ( resolve , reject ) => {
81
- const options = {
82
- rejectUnauthorized : true ,
83
- ca : credentialOptions [ 0 ] . ca ,
84
- servername : 'agent1' ,
85
- headers : { id }
86
- } ;
87
-
88
- let errored = false ;
89
- https . get ( `https://localhost:${ port } ` , options , ( res ) => {
90
- let response = '' ;
91
-
92
- res . setEncoding ( 'utf8' ) ;
93
-
94
- res . on ( 'data' , ( chunk ) => {
95
- response += chunk ;
96
- } ) ;
97
-
98
- res . on ( 'end' , common . mustCall ( ( ) => {
99
- resolve ( response ) ;
100
- } ) ) ;
101
- } ) . on ( 'error' , ( err ) => {
102
- errored = true ;
103
- reject ( err ) ;
104
- } ) . on ( 'finish' , ( ) => {
105
- assert . strictEqual ( errored , false ) ;
106
- } ) ;
107
- } ) ;
75
+ async function makeRequest ( port , id ) {
76
+ const options = {
77
+ rejectUnauthorized : true ,
78
+ ca : credentialOptions [ 0 ] . ca ,
79
+ servername : 'agent1' ,
80
+ headers : { id } ,
81
+ agent : new https . Agent ( )
82
+ } ;
83
+
84
+ const req = https . get ( `https://localhost:${ port } ` , options ) ;
85
+
86
+ let errored = false ;
87
+ req . on ( 'error' , ( ) => errored = true ) ;
88
+ req . on ( 'finish' , ( ) => assert . strictEqual ( errored , false ) ) ;
89
+
90
+ const [ res ] = await events . once ( req , 'response' ) ;
91
+ res . setEncoding ( 'utf8' ) ;
92
+ let response = '' ;
93
+ for await ( const chunk of res ) response += chunk ;
94
+ return response ;
108
95
}
0 commit comments