@@ -36,7 +36,7 @@ const assert = require('internal/assert');
3636const  EE  =  require ( 'events' ) ; 
3737const  Stream  =  require ( 'stream' ) ; 
3838const  internalUtil  =  require ( 'internal/util' ) ; 
39- const  {  kOutHeaders,  utcDate,  kNeedDrain }  =  require ( 'internal/http' ) ; 
39+ const  {  kOutHeaders,  utcDate,  kNeedDrain,  kClosed  }  =  require ( 'internal/http' ) ; 
4040const  {  Buffer }  =  require ( 'buffer' ) ; 
4141const  common  =  require ( '_http_common' ) ; 
4242const  checkIsHttpToken  =  common . _checkIsHttpToken ; 
@@ -117,6 +117,7 @@ function OutgoingMessage() {
117117  this . finished  =  false ; 
118118  this . _headerSent  =  false ; 
119119  this [ kCorked ]  =  0 ; 
120+   this [ kClosed ]  =  false ; 
120121
121122  this . socket  =  null ; 
122123  this . _header  =  null ; 
@@ -663,7 +664,9 @@ function onError(msg, err, callback) {
663664
664665function  emitErrorNt ( msg ,  err ,  callback )  { 
665666  callback ( err ) ; 
666-   if  ( typeof  msg . emit  ===  'function' )  msg . emit ( 'error' ,  err ) ; 
667+   if  ( typeof  msg . emit  ===  'function'  &&  ! msg [ kClosed ] )  { 
668+     msg . emit ( 'error' ,  err ) ; 
669+   } 
667670} 
668671
669672function  write_ ( msg ,  chunk ,  encoding ,  callback ,  fromEnd )  { 
@@ -690,7 +693,11 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
690693  } 
691694
692695  if  ( err )  { 
693-     onError ( msg ,  err ,  callback ) ; 
696+     if  ( ! msg . destroyed )  { 
697+       onError ( msg ,  err ,  callback ) ; 
698+     }  else  { 
699+       process . nextTick ( callback ,  err ) ; 
700+     } 
694701    return  false ; 
695702  } 
696703
0 commit comments