@@ -230,3 +230,93 @@ const { finished: finishedPromise } = require('stream/promises');
230230    assert . strictEqual ( err ?. message ,  'asd' ) ; 
231231  } ) ; 
232232} 
233+ 
234+ { 
235+   // Check pre-cancelled 
236+   const  signal  =  new  EventTarget ( ) ; 
237+   signal . aborted  =  true ; 
238+ 
239+   const  rs  =  new  ReadableStream ( { 
240+     start ( )  { } 
241+   } ) ; 
242+   finished ( rs ,  {  signal } ,  common . mustCall ( ( err )  =>  { 
243+     assert . strictEqual ( err . name ,  'AbortError' ) ; 
244+   } ) ) ; 
245+ } 
246+ 
247+ { 
248+   // Check cancelled before the stream ends sync. 
249+   const  ac  =  new  AbortController ( ) ; 
250+   const  {  signal }  =  ac ; 
251+ 
252+   const  rs  =  new  ReadableStream ( { 
253+     start ( )  { } 
254+   } ) ; 
255+   finished ( rs ,  {  signal } ,  common . mustCall ( ( err )  =>  { 
256+     assert . strictEqual ( err . name ,  'AbortError' ) ; 
257+   } ) ) ; 
258+ 
259+   ac . abort ( ) ; 
260+ } 
261+ 
262+ { 
263+   // Check cancelled before the stream ends async. 
264+   const  ac  =  new  AbortController ( ) ; 
265+   const  {  signal }  =  ac ; 
266+ 
267+   const  rs  =  new  ReadableStream ( { 
268+     start ( )  { } 
269+   } ) ; 
270+   setTimeout ( ( )  =>  ac . abort ( ) ,  1 ) ; 
271+   finished ( rs ,  {  signal } ,  common . mustCall ( ( err )  =>  { 
272+     assert . strictEqual ( err . name ,  'AbortError' ) ; 
273+   } ) ) ; 
274+ } 
275+ 
276+ { 
277+   // Check cancelled after doesn't throw. 
278+   const  ac  =  new  AbortController ( ) ; 
279+   const  {  signal }  =  ac ; 
280+ 
281+   const  rs  =  new  ReadableStream ( { 
282+     start ( controller )  { 
283+       controller . enqueue ( 'asd' ) ; 
284+       controller . close ( ) ; 
285+     } 
286+   } ) ; 
287+   finished ( rs ,  {  signal } ,  common . mustSucceed ( ) ) ; 
288+ 
289+   rs . getReader ( ) . read ( ) . then ( common . mustCall ( ( chunk )  =>  { 
290+     assert . strictEqual ( chunk . value ,  'asd' ) ; 
291+     setImmediate ( ( )  =>  ac . abort ( ) ) ; 
292+   } ) ) ; 
293+ } 
294+ 
295+ { 
296+   // Promisified abort works 
297+   async  function  run ( )  { 
298+     const  ac  =  new  AbortController ( ) ; 
299+     const  {  signal }  =  ac ; 
300+     const  rs  =  new  ReadableStream ( { 
301+       start ( )  { } 
302+     } ) ; 
303+     setImmediate ( ( )  =>  ac . abort ( ) ) ; 
304+     await  finishedPromise ( rs ,  {  signal } ) ; 
305+   } 
306+ 
307+   assert . rejects ( run ,  {  name : 'AbortError'  } ) . then ( common . mustCall ( ) ) ; 
308+ } 
309+ 
310+ { 
311+   // Promisified pre-aborted works 
312+   async  function  run ( )  { 
313+     const  signal  =  new  EventTarget ( ) ; 
314+     signal . aborted  =  true ; 
315+     const  rs  =  new  ReadableStream ( { 
316+       start ( )  { } 
317+     } ) ; 
318+     await  finishedPromise ( rs ,  {  signal } ) ; 
319+   } 
320+ 
321+   assert . rejects ( run ,  {  name : 'AbortError'  } ) . then ( common . mustCall ( ) ) ; 
322+ } 
0 commit comments