@@ -9,7 +9,9 @@ if (!common.hasCrypto)
99// secure context is changed.
1010
1111const assert = require ( 'assert' ) ;
12+ const events = require ( 'events' ) ;
1213const https = require ( 'https' ) ;
14+ const timers = require ( 'timers/promises' ) ;
1315const fixtures = require ( '../common/fixtures' ) ;
1416const credentialOptions = [
1517 {
@@ -43,10 +45,10 @@ server.listen(0, common.mustCall(() => {
4345 const { port } = server . address ( ) ;
4446 const firstRequest = makeRequest ( port , 1 ) ;
4547
46- async function makeRemainingRequests ( ) {
48+ ( async function makeRemainingRequests ( ) {
4749 // 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 ( ) ;
5052 }
5153
5254 assert . strictEqual ( await makeRequest ( port , 2 ) , 'success' ) ;
@@ -56,54 +58,38 @@ server.listen(0, common.mustCall(() => {
5658 const errorMessageRegex = common . hasOpenSSL3 ?
5759 / ^ 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 $ / :
5860 / ^ 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 ) ;
6262
6363 server . setSecureContext ( credentialOptions [ 0 ] ) ;
6464 assert . strictEqual ( await makeRequest ( port , 4 ) , 'success' ) ;
6565
6666 server . setSecureContext ( credentialOptions [ 1 ] ) ;
6767 firstResponse . end ( 'fun!' ) ;
68- await assert . rejects ( async ( ) => {
69- await makeRequest ( port , 5 ) ;
70- } , errorMessageRegex ) ;
68+ await assert . rejects ( makeRequest ( port , 5 ) , errorMessageRegex ) ;
7169
7270 assert . strictEqual ( await firstRequest , 'multi-request-success-fun!' ) ;
7371 server . close ( ) ;
74- }
75-
76- makeRemainingRequests ( ) ;
72+ } ) ( ) . then ( common . mustCall ( ) ) ;
7773} ) ) ;
7874
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- agent : new https . Agent ( )
87- } ;
88-
89- let errored = false ;
90- https . get ( `https://localhost:${ port } ` , options , ( res ) => {
91- let response = '' ;
92-
93- res . setEncoding ( 'utf8' ) ;
94-
95- res . on ( 'data' , ( chunk ) => {
96- response += chunk ;
97- } ) ;
98-
99- res . on ( 'end' , common . mustCall ( ( ) => {
100- resolve ( response ) ;
101- } ) ) ;
102- } ) . on ( 'error' , ( err ) => {
103- errored = true ;
104- reject ( err ) ;
105- } ) . on ( 'finish' , ( ) => {
106- assert . strictEqual ( errored , false ) ;
107- } ) ;
108- } ) ;
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 ;
10995}
0 commit comments