@@ -1418,6 +1418,54 @@ describe('transmission', () => {
14181418 expect ( count ) . to . equal ( 1 ) ;
14191419 } ) ;
14201420
1421+ it ( 'handles stream that is destroyed with no error' , async ( ) => {
1422+
1423+ const handler = ( request , h ) => {
1424+
1425+ const stream = new Stream . Readable ( { read : Hoek . ignore } ) ;
1426+
1427+ stream . push ( 'hello' ) ;
1428+ Hoek . wait ( 1 ) . then ( ( ) => stream . destroy ( ) ) ;
1429+
1430+ return h . response ( stream ) . type ( 'text/html' ) ;
1431+ } ;
1432+
1433+ const server = Hapi . server ( ) ;
1434+ server . route ( { method : 'GET' , path : '/' , handler } ) ;
1435+
1436+ const log = server . events . once ( 'response' ) ;
1437+ const err = await expect ( server . inject ( { url : '/' , headers : { 'accept-encoding' : 'gzip' } } ) ) . to . reject ( Boom . Boom ) ;
1438+ expect ( err . output . statusCode ) . to . equal ( 499 ) ;
1439+
1440+ const [ request ] = await log ;
1441+ expect ( request . response . isBoom ) . to . be . true ( ) ;
1442+ expect ( request . response . output . statusCode ) . to . equal ( 499 ) ;
1443+ } ) ;
1444+
1445+ it ( 'handles stream that is destroyed with error' , async ( ) => {
1446+
1447+ const handler = ( request , h ) => {
1448+
1449+ const stream = new Stream . Readable ( { read : Hoek . ignore } ) ;
1450+
1451+ stream . push ( 'hello' ) ;
1452+ Hoek . wait ( 1 ) . then ( ( ) => stream . destroy ( new Error ( 'failed' ) ) ) ;
1453+
1454+ return h . response ( stream ) . type ( 'text/html' ) ;
1455+ } ;
1456+
1457+ const server = Hapi . server ( ) ;
1458+ server . route ( { method : 'GET' , path : '/' , handler } ) ;
1459+
1460+ const log = server . events . once ( 'response' ) ;
1461+ const err = await expect ( server . inject ( { url : '/' , headers : { 'accept-encoding' : 'gzip' } } ) ) . to . reject ( Boom . Boom ) ;
1462+ expect ( err . output . statusCode ) . to . equal ( 499 ) ;
1463+
1464+ const [ request ] = await log ;
1465+ expect ( request . response . isBoom ) . to . be . true ( ) ;
1466+ expect ( request . response . output . statusCode ) . to . equal ( 500 ) ;
1467+ } ) ;
1468+
14211469 describe ( 'response range' , ( ) => {
14221470
14231471 const fileStreamHandler = ( request , h ) => {
0 commit comments