@@ -47,7 +47,7 @@ class HawkWebpackPlugin {
4747 } ) {
4848 this . releaseId = release ;
4949 this . releaseInfoFile = releaseInfoFile ;
50- this . requestTimeout = 50 ;
50+ this . requestTimeout = 5000 ;
5151 this . removeSourceMaps = removeSourceMaps ;
5252
5353 this . integrationToken = integrationToken ;
@@ -344,19 +344,39 @@ class HawkWebpackPlugin {
344344 Authorization : `Bearer ${ this . integrationToken } ` ,
345345 ...data . getHeaders ( ) ,
346346 } ,
347- } , ( response ) => {
347+ } ) ;
348+
349+ request . on ( 'response' , ( response ) => {
350+ let body = '' ;
348351 response . setEncoding ( 'utf8' ) ;
349- response . on ( 'data' , ( chunk ) => {
350- resolve ( chunk ) ;
352+ response . on ( 'data' , chunk => body += chunk ) ;
353+ response . on ( 'end' , ( ) => {
354+ const statusCode = response . statusCode ;
355+
356+ if ( typeof statusCode === 'number' && statusCode >= 200 && statusCode < 300 ) {
357+ resolve ( body ) ;
358+ } else {
359+ const error = new Error ( 'Request failed with status code ' + statusCode ) ;
360+
361+ error . statusCode = statusCode ;
362+ error . body = body ;
363+ reject ( error ) ;
364+ }
351365 } ) ;
352366 } ) ;
353367
354- request . on ( 'error' , ( e ) => {
355- reject ( e ) ;
356- } ) ;
368+ request . on ( 'error' , reject ) ;
369+
370+ data . getLength ( ( err , length ) => {
371+ if ( err ) {
372+ request . destroy ( err ) ;
373+ reject ( err ) ;
374+ return ;
375+ }
357376
358- request . write ( data . getBuffer ( ) ) ;
359- request . end ( ) ;
377+ request . setHeader ( 'Content-Length' , length ) ;
378+ data . pipe ( request ) ;
379+ } ) ;
360380 } ) ;
361381 }
362382
0 commit comments