@@ -37,6 +37,7 @@ const {
3737 ERR_INVALID_STATE ,
3838 ERR_INVALID_THIS ,
3939 } ,
40+ hideStackFrames,
4041} = require ( 'internal/errors' ) ;
4142
4243const {
@@ -140,6 +141,21 @@ const kError = Symbol('kError');
140141const kPull = Symbol ( 'kPull' ) ;
141142const kRelease = Symbol ( 'kRelease' ) ;
142143
144+ let releasedError ;
145+ let releasingError ;
146+
147+ const lazyReadableReleasedError = hideStackFrames ( ( ) => {
148+ releasedError ??= new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ;
149+ releasedError . stack ;
150+ return releasedError ;
151+ } ) ;
152+
153+ const lazyReadableReleasingError = hideStackFrames ( ( ) => {
154+ releasingError ??= new ERR_INVALID_STATE . TypeError ( 'Releasing reader' ) ;
155+ releasingError . stack ;
156+ return releasingError ;
157+ } ) ;
158+
143159const getNonWritablePropertyDescriptor = ( value ) => {
144160 return {
145161 __proto__ : null ,
@@ -2029,7 +2045,7 @@ function readableStreamDefaultReaderRelease(reader) {
20292045 readableStreamReaderGenericRelease ( reader ) ;
20302046 readableStreamDefaultReaderErrorReadRequests (
20312047 reader ,
2032- new ERR_INVALID_STATE . TypeError ( 'Releasing reader' )
2048+ lazyReadableReleasingError ( ) ,
20332049 ) ;
20342050}
20352051
@@ -2044,7 +2060,7 @@ function readableStreamBYOBReaderRelease(reader) {
20442060 readableStreamReaderGenericRelease ( reader ) ;
20452061 readableStreamBYOBReaderErrorReadIntoRequests (
20462062 reader ,
2047- new ERR_INVALID_STATE . TypeError ( 'Releasing reader' )
2063+ lazyReadableReleasingError ( ) ,
20482064 ) ;
20492065}
20502066
@@ -2062,13 +2078,12 @@ function readableStreamReaderGenericRelease(reader) {
20622078 assert ( stream !== undefined ) ;
20632079 assert ( stream [ kState ] . reader === reader ) ;
20642080
2081+ const releasedStateError = lazyReadableReleasedError ( ) ;
20652082 if ( stream [ kState ] . state === 'readable' ) {
2066- reader [ kState ] . close . reject ?. (
2067- new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ) ;
2083+ reader [ kState ] . close . reject ?. ( releasedStateError ) ;
20682084 } else {
20692085 reader [ kState ] . close = {
2070- promise : PromiseReject (
2071- new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ) ,
2086+ promise : PromiseReject ( releasedStateError ) ,
20722087 resolve : undefined ,
20732088 reject : undefined ,
20742089 } ;
0 commit comments