diff --git a/ext/node/polyfills/_fs/_fs_close.ts b/ext/node/polyfills/_fs/_fs_close.ts index 476b3912be..f2268e222e 100644 --- a/ext/node/polyfills/_fs/_fs_close.ts +++ b/ext/node/polyfills/_fs/_fs_close.ts @@ -1,14 +1,21 @@ // Copyright 2018-2025 the Deno authors. MIT license. -// TODO(petamoriken): enable prefer-primordials for node polyfills -// deno-lint-ignore-file prefer-primordials - -import type { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts"; +import { + type CallbackWithError, + makeCallback, +} from "ext:deno_node/_fs/_fs_common.ts"; import { getValidatedFd } from "ext:deno_node/internal/fs/utils.mjs"; -import { core } from "ext:core/mod.js"; +import { core, primordials } from "ext:core/mod.js"; + +const { + Error, + ErrorPrototype, + ObjectPrototypeIsPrototypeOf, +} = primordials; export function close(fd: number, callback: CallbackWithError) { fd = getValidatedFd(fd); + callback = makeCallback(callback); setTimeout(() => { let error = null; try { @@ -16,7 +23,9 @@ export function close(fd: number, callback: CallbackWithError) { // implementation detail and may change. core.close(fd); } catch (err) { - error = err instanceof Error ? err : new Error("[non-error thrown]"); + error = ObjectPrototypeIsPrototypeOf(ErrorPrototype, err) + ? err as Error + : new Error("[non-error thrown]"); } callback(error); }, 0);