mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00
stream: support abort signal
PR-URL: https://github.com/nodejs/node/pull/36061 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com>
This commit is contained in:
parent
5122456883
commit
5bd1eecfa9
10 changed files with 183 additions and 13 deletions
|
@ -51,7 +51,7 @@ const { Buffer } = require('buffer');
|
|||
const { defaultTriggerAsyncIdScope } = require('internal/async_hooks');
|
||||
const { URL, urlToOptions, searchParamsSymbol } = require('internal/url');
|
||||
const { kOutHeaders, kNeedDrain } = require('internal/http');
|
||||
const { AbortError, connResetException, codes } = require('internal/errors');
|
||||
const { connResetException, codes } = require('internal/errors');
|
||||
const {
|
||||
ERR_HTTP_HEADERS_SENT,
|
||||
ERR_INVALID_ARG_TYPE,
|
||||
|
@ -61,7 +61,6 @@ const {
|
|||
} = codes;
|
||||
const {
|
||||
validateInteger,
|
||||
validateAbortSignal,
|
||||
} = require('internal/validators');
|
||||
const { getTimerDuration } = require('internal/timers');
|
||||
const {
|
||||
|
@ -69,6 +68,8 @@ const {
|
|||
DTRACE_HTTP_CLIENT_RESPONSE
|
||||
} = require('internal/dtrace');
|
||||
|
||||
const { addAbortSignal } = require('stream');
|
||||
|
||||
const INVALID_PATH_REGEX = /[^\u0021-\u00ff]/;
|
||||
const kError = Symbol('kError');
|
||||
|
||||
|
@ -174,12 +175,7 @@ function ClientRequest(input, options, cb) {
|
|||
|
||||
const signal = options.signal;
|
||||
if (signal) {
|
||||
validateAbortSignal(signal, 'options.signal');
|
||||
const listener = (e) => this.destroy(new AbortError());
|
||||
signal.addEventListener('abort', listener);
|
||||
this.once('close', () => {
|
||||
signal.removeEventListener('abort', listener);
|
||||
});
|
||||
addAbortSignal(signal, this);
|
||||
}
|
||||
let method = options.method;
|
||||
const methodIsString = (typeof method === 'string');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue