@@ -37,6 +37,7 @@ const {
37
37
ERR_INVALID_STATE ,
38
38
ERR_INVALID_THIS ,
39
39
} ,
40
+ hideStackFrames,
40
41
} = require ( 'internal/errors' ) ;
41
42
42
43
const {
@@ -140,6 +141,21 @@ const kError = Symbol('kError');
140
141
const kPull = Symbol ( 'kPull' ) ;
141
142
const kRelease = Symbol ( 'kRelease' ) ;
142
143
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
+
143
159
const getNonWritablePropertyDescriptor = ( value ) => {
144
160
return {
145
161
__proto__ : null ,
@@ -2029,7 +2045,7 @@ function readableStreamDefaultReaderRelease(reader) {
2029
2045
readableStreamReaderGenericRelease ( reader ) ;
2030
2046
readableStreamDefaultReaderErrorReadRequests (
2031
2047
reader ,
2032
- new ERR_INVALID_STATE . TypeError ( 'Releasing reader' )
2048
+ lazyReadableReleasingError ( ) ,
2033
2049
) ;
2034
2050
}
2035
2051
@@ -2044,7 +2060,7 @@ function readableStreamBYOBReaderRelease(reader) {
2044
2060
readableStreamReaderGenericRelease ( reader ) ;
2045
2061
readableStreamBYOBReaderErrorReadIntoRequests (
2046
2062
reader ,
2047
- new ERR_INVALID_STATE . TypeError ( 'Releasing reader' )
2063
+ lazyReadableReleasingError ( ) ,
2048
2064
) ;
2049
2065
}
2050
2066
@@ -2062,13 +2078,12 @@ function readableStreamReaderGenericRelease(reader) {
2062
2078
assert ( stream !== undefined ) ;
2063
2079
assert ( stream [ kState ] . reader === reader ) ;
2064
2080
2081
+ const releasedStateError = lazyReadableReleasedError ( ) ;
2065
2082
if ( stream [ kState ] . state === 'readable' ) {
2066
- reader [ kState ] . close . reject ?. (
2067
- new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ) ;
2083
+ reader [ kState ] . close . reject ?. ( releasedStateError ) ;
2068
2084
} else {
2069
2085
reader [ kState ] . close = {
2070
- promise : PromiseReject (
2071
- new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ) ,
2086
+ promise : PromiseReject ( releasedStateError ) ,
2072
2087
resolve : undefined ,
2073
2088
reject : undefined ,
2074
2089
} ;
0 commit comments