@@ -286,15 +286,8 @@ class ReadableStream {
286286 [ kControllerAbortFunction ] ( error ) {
287287 if ( ! isReadableStream ( this ) )
288288 throw new ERR_INVALID_THIS ( 'ReadableStream' ) ;
289-
290- const controller = this [ kState ] . controller ;
291- if ( isReadableStreamDefaultController ( controller ) ) {
292- readableStreamDefaultControllerError ( controller , error ) ;
293- return ;
294- }
295-
296- assert ( isReadableByteStreamController ( controller ) ) ;
297- readableByteStreamControllerError ( controller , error ) ;
289+ if ( this [ kState ] . state === 'readable' )
290+ setPromiseHandled ( readableStreamCancel ( this , error , 'errored' ) ) ;
298291 }
299292
300293 get [ kIsDisturbed ] ( ) {
@@ -2090,22 +2083,26 @@ function isReadableStreamLocked(stream) {
20902083 return stream [ kState ] . reader !== undefined ;
20912084}
20922085
2093- function readableStreamCancel ( stream , reason ) {
2086+ function readableStreamCancel ( stream , reason , finalState = 'closed' ) {
20942087 stream [ kState ] . disturbed = true ;
20952088 switch ( stream [ kState ] . state ) {
20962089 case 'closed' :
20972090 return PromiseResolve ( ) ;
20982091 case 'errored' :
20992092 return PromiseReject ( stream [ kState ] . storedError ) ;
21002093 }
2101- readableStreamClose ( stream ) ;
2102- const {
2103- reader,
2104- } = stream [ kState ] ;
2105- if ( reader !== undefined && readableStreamHasBYOBReader ( stream ) ) {
2106- for ( let n = 0 ; n < reader [ kState ] . readIntoRequests . length ; n ++ )
2107- reader [ kState ] . readIntoRequests [ n ] [ kClose ] ( ) ;
2108- reader [ kState ] . readIntoRequests = [ ] ;
2094+ if ( finalState === 'errored' ) {
2095+ readableStreamError ( stream , reason ) ;
2096+ } else {
2097+ readableStreamClose ( stream ) ;
2098+ const {
2099+ reader,
2100+ } = stream [ kState ] ;
2101+ if ( reader !== undefined && readableStreamHasBYOBReader ( stream ) ) {
2102+ for ( let n = 0 ; n < reader [ kState ] . readIntoRequests . length ; n ++ )
2103+ reader [ kState ] . readIntoRequests [ n ] [ kClose ] ( ) ;
2104+ reader [ kState ] . readIntoRequests = [ ] ;
2105+ }
21092106 }
21102107
21112108 return PromisePrototypeThen (
0 commit comments