◐ Shell
clean mode source ↗

stream: copyedit `webstreams/adapter.js` · nodejs/node@7792f1a

@@ -2,13 +2,11 @@

2233

const {

44

ArrayPrototypeFilter,

5-

ArrayPrototypeMap,

6-

Boolean,

7-

ObjectEntries,

5+

ObjectKeys,

86

PromisePrototypeThen,

97

PromiseResolve,

108

PromiseWithResolvers,

11-

SafePromiseAll,

9+

SafePromiseAllReturnVoid,

1210

SafePromisePrototypeFinally,

1311

SafeSet,

1412

StringPrototypeStartsWith,

@@ -73,6 +71,7 @@ const {

7371

const {

7472

kEmptyObject,

7573

normalizeEncoding,

74+

setOwnProperty,

7675

} = require('internal/util');

77767877

const {

@@ -92,6 +91,7 @@ const {

92919392

const { eos } = require('internal/streams/end-of-stream');

949394+

const { zlib } = internalBinding('constants');

9595

const { UV_EOF } = internalBinding('uv');

96969797

const encoder = new TextEncoder();

@@ -100,37 +100,34 @@ const kValidateChunk = Symbol('kValidateChunk');

100100

const kDestroyOnSyncError = Symbol('kDestroyOnSyncError');

101101102102

// Collect all negative (error) ZLIB codes and Z_NEED_DICT

103-

const ZLIB_FAILURES = new SafeSet([

104-

...ArrayPrototypeFilter(

105-

ArrayPrototypeMap(

106-

ObjectEntries(internalBinding('constants').zlib),

107-

({ 0: code, 1: value }) => (value < 0 ? code : null),

108-

),

109-

Boolean,

103+

const ZLIB_FAILURES = new SafeSet(

104+

ArrayPrototypeFilter(

105+

ObjectKeys(zlib),

106+

(code) => code === 'Z_NEED_DICT' || zlib[code] < 0,

110107

),

111-

'Z_NEED_DICT',

112-

]);

108+

);

113109114110

/**

115111

* @param {Error|null} cause

116112

* @returns {Error|null}

117113

*/

118114

function handleKnownInternalErrors(cause) {

115+

const causeCode = cause?.code;

119116

switch (true) {

120-

case cause?.code === 'ERR_STREAM_PREMATURE_CLOSE': {

117+

case causeCode === 'ERR_STREAM_PREMATURE_CLOSE': {

121118

return new AbortError(undefined, { cause });

122119

}

123-

case ZLIB_FAILURES.has(cause?.code):

120+

case ZLIB_FAILURES.has(causeCode):

124121

// Brotli decoder error codes are formatted as 'ERR_' +

125122

// BrotliDecoderErrorString(), where the latter returns strings like

126123

// '_ERROR_FORMAT_...', '_ERROR_ALLOC_...', '_ERROR_UNREACHABLE', etc.

127124

// The resulting JS error codes all start with 'ERR__ERROR_'.

128125

// Falls through

129-

case cause?.code != null &&

130-

StringPrototypeStartsWith(cause.code, 'ERR__ERROR_'): {

126+

case causeCode != null &&

127+

StringPrototypeStartsWith(causeCode, 'ERR__ERROR_'): {

131128

// eslint-disable-next-line no-restricted-syntax

132129

const error = new TypeError(undefined, { cause });

133-

error.code = cause.code;

130+

setOwnProperty(error, 'code', causeCode);

134131

return error;

135132

}

136133

default:

@@ -189,8 +186,7 @@ function newWritableStreamFromStreamWritable(streamWritable, options = kEmptyObj

189186

let closed;

190187191188

function onDrain() {

192-

if (backpressurePromise !== undefined)

193-

backpressurePromise.resolve();

189+

backpressurePromise?.resolve();

194190

}

195191196192

const cleanup = eos(streamWritable, (error) => {

@@ -201,8 +197,7 @@ function newWritableStreamFromStreamWritable(streamWritable, options = kEmptyObj

201197

// that happen to emit an error event again after finished is called.

202198

streamWritable.on('error', () => {});

203199

if (error != null) {

204-

if (backpressurePromise !== undefined)

205-

backpressurePromise.reject(error);

200+

backpressurePromise?.reject(error);

206201

// If closed is not undefined, the error is happening

207202

// after the WritableStream close has already started.

208203

// We need to reject it here.

@@ -329,10 +324,10 @@ function newStreamWritableFromWritableStream(writableStream, options = kEmptyObj

329324

writer.ready,

330325

() => {

331326

return PromisePrototypeThen(

332-

SafePromiseAll(

327+

SafePromiseAllReturnVoid(

333328

chunks,

334329

(data) => writer.write(data.chunk)),

335-

() => done(),

330+

done,

336331

done);

337332

},

338333

done);

@@ -790,10 +785,10 @@ function newStreamDuplexFromReadableWritablePair(pair = kEmptyObject, options =

790785

writer.ready,

791786

() => {

792787

return PromisePrototypeThen(

793-

SafePromiseAll(

788+

SafePromiseAllReturnVoid(

794789

chunks,

795790

(data) => writer.write(data.chunk)),

796-

() => done(),

791+

done,

797792

done);

798793

},

799794

done);

@@ -895,7 +890,7 @@ function newStreamDuplexFromReadableWritablePair(pair = kEmptyObject, options =

895890896891

if (!writableClosed || !readableClosed) {

897892

PromisePrototypeThen(

898-

SafePromiseAll([

893+

SafePromiseAllReturnVoid([

899894

closeWriter(),

900895

closeReader(),

901896

]),