diff --git a/ext/node/polyfills/internal/util.mjs b/ext/node/polyfills/internal/util.mjs index 9a5a5b8ec7c1ab..9471975550edf9 100644 --- a/ext/node/polyfills/internal/util.mjs +++ b/ext/node/polyfills/internal/util.mjs @@ -10,7 +10,7 @@ import { import { ERR_UNKNOWN_SIGNAL } from "ext:deno_node/internal/errors.ts"; import { os } from "ext:deno_node/internal_binding/constants.ts"; import { primordials } from "ext:core/mod.js"; -import { isNativeError } from "ext:deno_node/internal/util/types.ts"; +import { isNativeError, isPromise } from "ext:deno_node/internal/util/types.ts"; // deno-lint-ignore prefer-primordials const AtomicsWait = Atomics.wait; @@ -119,7 +119,13 @@ export function promisify( resolve(values[0]); } }); - ReflectApply(original, this, args); + if (isPromise(ReflectApply(original, this, args))) { + globalThis.process.emitWarning( + "Calling promisify on a function that returns a Promise is likely a mistake.", + "DeprecationWarning", + "DEP0174", + ); + } }); } diff --git a/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index f2269892f2bfcf..6ea49b9b18863f 100644 --- a/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc @@ -3248,6 +3248,7 @@ "parallel/test-util-parse-env.js": {}, "parallel/test-util-primordial-monkeypatching.js": {}, "parallel/test-util-promisify-custom-names.mjs": {}, + "parallel/test-util-promisify.js": {}, "parallel/test-util-stripvtcontrolcharacters.js": {}, "parallel/test-util-styletext.js": {}, "parallel/test-util-text-decoder.js": {},