From 732650d6a43d235d36a9bf8717766e012f445461 Mon Sep 17 00:00:00 2001 From: Anton Golub Date: Tue, 31 Oct 2023 09:54:48 +0300 Subject: fix: provide nodejs compat for dns methods wrapped with util.promisify (#6748) * fix: add nodejs compat for dns methods wrapping with util.promisify * fix: use single symbol for util.promisify.custom * style: linting --- src/js/node/dns.js | 23 +++++++++++++++++++++++ src/js/node/util.js | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/js/node/dns.js b/src/js/node/dns.js index e82e6a4b5..3f8787742 100644 --- a/src/js/node/dns.js +++ b/src/js/node/dns.js @@ -1,6 +1,7 @@ // Hardcoded module "node:dns" // only resolve4, resolve, lookup, resolve6, resolveSrv, and reverse are implemented. const dns = Bun.dns; +const utilPromisifyCustomSymbol = Symbol.for("nodejs.util.promisify.custom"); function getServers() { return dns.getServers(); @@ -683,6 +684,28 @@ for (const key of ["resolveAny"]) { promises[key] = () => Promise.resolve(undefined); } +// Compatibility with util.promisify(dns[method]) +for (const [method, pMethod] of [ + [lookup, promises.lookup], + [lookupService, promises.lookupService], + [resolve, promises.resolve], + [reverse, promises.reverse], + [resolve4, promises.resolve4], + [resolve6, promises.resolve6], + [resolveAny, promises.resolveAny], + [resolveCname, promises.resolveCname], + [resolveCaa, promises.resolveCaa], + [resolveMx, promises.resolveMx], + [resolveNs, promises.resolveNs], + [resolvePtr, promises.resolvePtr], + [resolveSoa, promises.resolveSoa], + [resolveSrv, promises.resolveSrv], + [resolveTxt, promises.resolveTxt], + [resolveNaptr, promises.resolveNaptr], +]) { + method[utilPromisifyCustomSymbol] = pMethod; +} + export default { // these are wrong ADDRCONFIG: 0, diff --git a/src/js/node/util.js b/src/js/node/util.js index dae341448..2002eed25 100644 --- a/src/js/node/util.js +++ b/src/js/node/util.js @@ -147,7 +147,7 @@ var _extend = function (origin, add) { } return origin; }; -var kCustomPromisifiedSymbol = Symbol.for("util.promisify.custom"); +var kCustomPromisifiedSymbol = Symbol.for("nodejs.util.promisify.custom"); var promisify = function promisify(original) { if (typeof original !== "function") throw new TypeError('The "original" argument must be of type Function'); if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { -- cgit v1.2.3