MCPcopy Index your code
hub / github.com/nodejs/node / consume

Function consume

deps/undici/src/lib/api/readable.js:383–423  ·  view source on GitHub ↗

* @template {ConsumeType} T * @param {BodyReadable} stream * @param {T} type * @returns {Promise >}

(stream, type)

Source from the content-addressed store, hash-verified

381 * @returns {Promise<ConsumeReturnType<T>>}
382 */
383function consume (stream, type) {
384 assert(!stream[kConsume])
385
386 return new Promise((resolve, reject) => {
387 if (isUnusable(stream)) {
388 const rState = stream._readableState
389 if (rState.destroyed && rState.closeEmitted === false) {
390 stream
391 .on('error', reject)
392 .on('close', () => {
393 reject(new TypeError('unusable'))
394 })
395 } else {
396 reject(rState.errored ?? new TypeError('unusable'))
397 }
398 } else {
399 queueMicrotask(() => {
400 stream[kConsume] = {
401 type,
402 stream,
403 resolve,
404 reject,
405 length: 0,
406 body: []
407 }
408
409 stream
410 .on('error', function (err) {
411 consumeFinish(this[kConsume], err)
412 })
413 .on('close', function () {
414 if (this[kConsume].body !== null) {
415 consumeFinish(this[kConsume], new RequestAbortedError())
416 }
417 })
418
419 consumeStart(stream[kConsume])
420 })
421 }
422 })
423}
424
425/**
426 * @param {Consume} consume

Callers 5

textMethod · 0.70
jsonMethod · 0.70
blobMethod · 0.70
bytesMethod · 0.70
arrayBufferMethod · 0.70

Calls 7

queueMicrotaskFunction · 0.85
isUnusableFunction · 0.70
consumeFinishFunction · 0.70
consumeStartFunction · 0.70
assertFunction · 0.50
rejectFunction · 0.50
onMethod · 0.45

Tested by

no test coverage detected