@@ -38,7 +38,8 @@ const {
3838 ObjectPrototypeHasOwnProperty,
3939 ObjectSetPrototypeOf,
4040 RegExpPrototypeTest,
41- StringPrototypeToLowerCase
41+ StringPrototypeToLowerCase,
42+ Symbol,
4243} = primordials ;
4344
4445const { getDefaultHighWaterMark } = require ( 'internal/streams/state' ) ;
@@ -80,6 +81,8 @@ const { construct, destroy } = require('internal/streams/destroy');
8081const HIGH_WATER_MARK = getDefaultHighWaterMark ( ) ;
8182const { CRLF , debug } = common ;
8283
84+ const kCorked = Symbol ( 'kCorked' ) ;
85+
8386const nop = FunctionPrototype ;
8487
8588const RE_CONN_CLOSE = / (?: ^ | \W ) c l o s e (?: $ | \W ) / i;
@@ -120,6 +123,7 @@ function OutgoingMessage(opts) {
120123 this . _trailer = '' ;
121124
122125 this . _headerSent = false ;
126+ this [ kCorked ] = 0 ;
123127
124128 this . socket = null ;
125129 this . _header = null ;
@@ -283,6 +287,8 @@ OutgoingMessage.prototype.cork = function() {
283287
284288 if ( this . socket ) {
285289 this . socket . cork ( ) ;
290+ } else {
291+ this [ kCorked ] ++ ;
286292 }
287293} ;
288294
@@ -293,6 +299,8 @@ OutgoingMessage.prototype.uncork = function() {
293299
294300 if ( this . socket ) {
295301 this . socket . uncork ( ) ;
302+ } else if ( this [ kCorked ] ) {
303+ this [ kCorked ] -- ;
296304 }
297305} ;
298306
@@ -313,14 +321,14 @@ OutgoingMessage.prototype.setTimeout = function setTimeout(msecs, callback) {
313321
314322OutgoingMessage . prototype . _construct = function ( callback ) {
315323 if ( this . socket ) {
316- for ( let n = 0 ; n < this . _writableState . corked ; ++ n ) {
324+ for ( let n = 0 ; n < this [ kCorked ] ; ++ n ) {
317325 this . socket . cork ( ) ;
318326 }
319327 callback ( ) ;
320328 } else {
321329 // TODO(ronag): What if never assigned socket?
322330 this . once ( 'socket' , function ( socket ) {
323- for ( let n = 0 ; n < this . _writableState . corked ; ++ n ) {
331+ for ( let n = 0 ; n < this [ kCorked ] ; ++ n ) {
324332 socket . cork ( ) ;
325333 }
326334 callback ( ) ;
@@ -772,7 +780,7 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
772780
773781 if ( ! fromEnd && ! state . corked ) {
774782 msg . cork ( ) ;
775- process . nextTick ( connectionCorkNT , msg ) ;
783+ process . nextTick ( uncorkNT , msg ) ;
776784 }
777785
778786 let ret ;
@@ -790,8 +798,8 @@ function write_(msg, chunk, encoding, callback, fromEnd) {
790798}
791799
792800
793- function connectionCorkNT ( conn ) {
794- conn . uncork ( ) ;
801+ function uncorkNT ( msg ) {
802+ msg . uncork ( ) ;
795803}
796804
797805
0 commit comments