@@ -119,39 +119,6 @@ suite('underlying Writable', () => {
119119 assert . deepStrictEqual ( consumed , Buffer . from ( [ 1 , 2 , 3 , 4 ] ) ) ;
120120 } ) ;
121121
122- test ( 'copies mutable chunks when write() is overridden' , async ( ) => {
123- let consumed ;
124- let received ;
125- let notifyConsumed ;
126- const consumedPromise = new Promise ( ( resolve ) => {
127- notifyConsumed = resolve ;
128- } ) ;
129- const writable = new Writable ( {
130- write ( chunk , encoding , callback ) {
131- callback ( ) ;
132- } ,
133- } ) ;
134- writable . on ( 'error' , common . mustNotCall ( ) ) ;
135- const writer = Writable . toWeb ( writable ) . getWriter ( ) ;
136- writable . write = common . mustCall ( ( chunk ) => {
137- received = chunk ;
138- setImmediate ( ( ) => {
139- consumed = Buffer . from ( chunk ) ;
140- notifyConsumed ( ) ;
141- } ) ;
142- return true ;
143- } ) ;
144- const input = new Uint8Array ( [ 1 , 2 , 3 , 4 ] ) ;
145-
146- await writer . write ( input ) ;
147- input . fill ( 9 ) ;
148- await consumedPromise ;
149- await writer . close ( ) ;
150-
151- assert . notStrictEqual ( received . buffer , input . buffer ) ;
152- assert . deepStrictEqual ( consumed , Buffer . from ( [ 1 , 2 , 3 , 4 ] ) ) ;
153- } ) ;
154-
155122 test ( 'does not trust a patched Writable.prototype.write' , async ( ) => {
156123 const originalWrite = Writable . prototype . write ;
157124 let consumed ;
@@ -302,24 +269,31 @@ suite('underlying Writable', () => {
302269 for ( const ctor of ctors ) {
303270 test ( `passes through ${ ctor . name } chunks` , async ( ) => {
304271 const buffer = new ctor ( 4 ) ;
272+ let finishWrite ;
305273 const writable = new Writable ( {
306274 objectMode : true ,
307275 write : common . mustCall ( ( chunk , encoding , callback ) => {
308276 assert ( chunk instanceof ctor ) ;
309277 assert . strictEqual ( chunk , buffer ) ;
310- callback ( ) ;
278+ finishWrite = callback ;
311279 } ) ,
312280 } ) ;
313281 writable . on ( 'error' , common . mustNotCall ( ) ) ;
314282 const writer = Writable . toWeb ( writable ) . getWriter ( ) ;
315- await writer . write ( buffer ) ;
283+ const writePromise = writer . write ( buffer ) ;
284+ try {
285+ await completesWithin ( writePromise ) ;
286+ } finally {
287+ finishWrite ( ) ;
288+ }
289+ await writer . close ( ) ;
316290 } ) ;
317291 }
318292 } ) ;
319293} ) ;
320294
321295suite ( 'underlying ServerResponse' , ( ) => {
322- test ( 'rejects invalid view types before cloning ' , async ( ) => {
296+ test ( 'rejects invalid view types' , async ( ) => {
323297 const response = createServerResponse ( ) ;
324298 const writer = Writable . toWeb ( response ) . getWriter ( ) ;
325299
@@ -411,7 +385,8 @@ suite('underlying Duplex', () => {
411385 } ,
412386 } ) ;
413387 duplex . on ( 'error' , common . mustNotCall ( ) ) ;
414- const writer = Duplex . toWeb ( duplex ) . writable . getWriter ( ) ;
388+ const writer = Writable . toWeb ( duplex ) . getWriter ( ) ;
389+ duplex . resume ( ) ;
415390 const input = new Uint8Array ( [ 1 , 2 , 3 , 4 ] ) ;
416391
417392 await writer . write ( input ) ;
@@ -431,20 +406,27 @@ suite('underlying Duplex', () => {
431406 for ( const ctor of ctors ) {
432407 test ( `passes through ${ ctor . name } chunks` , async ( ) => {
433408 const buffer = new ctor ( 4 ) ;
409+ let finishWrite ;
434410 const duplex = new Duplex ( {
435411 writableObjectMode : true ,
436412 write : common . mustCall ( ( chunk , encoding , callback ) => {
437413 assert ( chunk instanceof ctor ) ;
438414 assert . strictEqual ( chunk , buffer ) ;
439- callback ( ) ;
415+ finishWrite = callback ;
440416 } ) ,
441417 read ( ) {
442418 this . push ( null ) ;
443419 } ,
444420 } ) ;
445421 duplex . on ( 'error' , common . mustNotCall ( ) ) ;
446422 const writer = Duplex . toWeb ( duplex ) . writable . getWriter ( ) ;
447- await writer . write ( buffer ) ;
423+ const writePromise = writer . write ( buffer ) ;
424+ try {
425+ await completesWithin ( writePromise ) ;
426+ } finally {
427+ finishWrite ( ) ;
428+ }
429+ await writer . close ( ) ;
448430 } ) ;
449431 }
450432 } ) ;
0 commit comments