diff options
Diffstat (limited to 'ext/node/polyfills/util.ts')
-rw-r--r-- | ext/node/polyfills/util.ts | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/ext/node/polyfills/util.ts b/ext/node/polyfills/util.ts index cb4e6498a..c94d0f14b 100644 --- a/ext/node/polyfills/util.ts +++ b/ext/node/polyfills/util.ts @@ -25,9 +25,13 @@ const { StringPrototypeIsWellFormed, StringPrototypePadStart, StringPrototypeToWellFormed, + PromiseResolve, } = primordials; -import { promisify } from "ext:deno_node/internal/util.mjs"; +import { + createDeferredPromise, + promisify, +} from "ext:deno_node/internal/util.mjs"; import { callbackify } from "ext:deno_node/_util/_util_callbackify.js"; import { debuglog } from "ext:deno_node/internal/util/debuglog.ts"; import { @@ -41,8 +45,13 @@ import types from "node:util/types"; import { Buffer } from "node:buffer"; import { isDeepStrictEqual } from "ext:deno_node/internal/util/comparisons.ts"; import process from "node:process"; -import { validateString } from "ext:deno_node/internal/validators.mjs"; +import { + validateAbortSignal, + validateString, +} from "ext:deno_node/internal/validators.mjs"; import { parseArgs } from "ext:deno_node/internal/util/parse_args/parse_args.js"; +import * as abortSignal from "ext:deno_web/03_abort_signal.js"; +import { ERR_INVALID_ARG_TYPE } from "ext:deno_node/internal/errors.ts"; export { callbackify, @@ -288,6 +297,24 @@ export function deprecate(fn: any, msg: string, code?: any) { return deprecated; } +// deno-lint-ignore require-await +export async function aborted( + signal: AbortSignal, + // deno-lint-ignore no-explicit-any + _resource: any, +): Promise<void> { + if (signal === undefined) { + throw new ERR_INVALID_ARG_TYPE("signal", "AbortSignal", signal); + } + validateAbortSignal(signal, "signal"); + if (signal.aborted) { + return PromiseResolve(); + } + const abortPromise = createDeferredPromise(); + signal[abortSignal.add](abortPromise.resolve); + return abortPromise.promise; +} + export { getSystemErrorName, isDeepStrictEqual }; export default { @@ -311,6 +338,7 @@ export default { isBuffer, _extend, getSystemErrorName, + aborted, deprecate, callbackify, parseArgs, |