@@ -16,8 +16,14 @@ describe('given a default instance of NodeRequests', () => {
1616 let resolve : ( value : TestRequestData | PromiseLike < TestRequestData > ) => void ;
1717 let promise : Promise < TestRequestData > ;
1818 let server : http . Server ;
19+ let resetResolve : ( ) => void ;
20+ let resetPromise : Promise < void > ;
1921
2022 beforeEach ( ( ) => {
23+ resetPromise = new Promise ( ( res ) => {
24+ resetResolve = res ;
25+ } ) ;
26+
2127 promise = new Promise < TestRequestData > ( ( res ) => {
2228 resolve = res ;
2329 } ) ;
@@ -43,6 +49,14 @@ describe('given a default instance of NodeRequests', () => {
4349 } else if ( ( req . url ?. indexOf ( '404' ) || - 1 ) >= 0 ) {
4450 res . statusCode = 404 ;
4551 res . end ( ) ;
52+ } else if ( ( req . url ?. indexOf ( 'reset' ) || - 1 ) >= 0 ) {
53+ res . statusCode = 200 ;
54+ res . flushHeaders ( ) ;
55+ res . write ( 'potato' ) ;
56+ setTimeout ( ( ) => {
57+ res . destroy ( ) ;
58+ resetResolve ( ) ;
59+ } , 0 ) ;
4660 } else {
4761 res . end ( TEXT_RESPONSE ) ;
4862 }
@@ -115,4 +129,19 @@ describe('given a default instance of NodeRequests', () => {
115129 expect ( serverResult . body ) . toEqual ( 'BODY TEXT' ) ;
116130 expect ( serverResult . headers [ 'sample-header' ] ) . toEqual ( 'Some header value' ) ;
117131 } ) ;
132+
133+ it ( 'rejection is handled for response even if not awaited' , async ( ) => {
134+ const res = await requests . fetch ( `http://localhost:${ PORT } /reset` ) ;
135+ expect ( res . status ) . toEqual ( 200 ) ;
136+ await resetPromise ;
137+ } ) ;
138+
139+ it ( 'rejection is propagated with json promise' , async ( ) => {
140+ const res = await requests . fetch ( `http://localhost:${ PORT } /reset` ) ;
141+ expect ( res . status ) . toEqual ( 200 ) ;
142+
143+ await expect ( async ( ) => {
144+ await res . json ( ) ;
145+ } ) . rejects . toThrow ( ) ;
146+ } ) ;
118147} ) ;
0 commit comments