@@ -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,19 @@ 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
+ return releasedError ;
150
+ } ) ;
151
+
152
+ const lazyReadableReleasingError = hideStackFrames ( ( ) => {
153
+ releasingError ??= new ERR_INVALID_STATE . TypeError ( 'Releasing reader' ) ;
154
+ return releasingError ;
155
+ } ) ;
156
+
143
157
const getNonWritablePropertyDescriptor = ( value ) => {
144
158
return {
145
159
__proto__ : null ,
@@ -2029,7 +2043,7 @@ function readableStreamDefaultReaderRelease(reader) {
2029
2043
readableStreamReaderGenericRelease ( reader ) ;
2030
2044
readableStreamDefaultReaderErrorReadRequests (
2031
2045
reader ,
2032
- new ERR_INVALID_STATE . TypeError ( 'Releasing reader' )
2046
+ lazyReadableReleasingError ( ) ,
2033
2047
) ;
2034
2048
}
2035
2049
@@ -2044,7 +2058,7 @@ function readableStreamBYOBReaderRelease(reader) {
2044
2058
readableStreamReaderGenericRelease ( reader ) ;
2045
2059
readableStreamBYOBReaderErrorReadIntoRequests (
2046
2060
reader ,
2047
- new ERR_INVALID_STATE . TypeError ( 'Releasing reader' )
2061
+ lazyReadableReleasingError ( ) ,
2048
2062
) ;
2049
2063
}
2050
2064
@@ -2062,13 +2076,12 @@ function readableStreamReaderGenericRelease(reader) {
2062
2076
assert ( stream !== undefined ) ;
2063
2077
assert ( stream [ kState ] . reader === reader ) ;
2064
2078
2079
+ const releasedStateError = lazyReadableReleasedError ( ) ;
2065
2080
if ( stream [ kState ] . state === 'readable' ) {
2066
- reader [ kState ] . close . reject ?. (
2067
- new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ) ;
2081
+ reader [ kState ] . close . reject ?. ( releasedStateError ) ;
2068
2082
} else {
2069
2083
reader [ kState ] . close = {
2070
- promise : PromiseReject (
2071
- new ERR_INVALID_STATE . TypeError ( 'Reader released' ) ) ,
2084
+ promise : PromiseReject ( releasedStateError ) ,
2072
2085
resolve : undefined ,
2073
2086
reject : undefined ,
2074
2087
} ;
0 commit comments