Commit b456adbcd6f for nodejs
commit b456adbcd6f67f32db84b45e36c4b44c31651551
Author: Lazizbek Ergashev <lazerg2@gmail.com>
Date: Tue Aug 25 13:10:33 2026 +0500
worker: add Symbol.toStringTag to MessageChannel and MessagePort
Signed-off-by: Lazizbek Ergashev <lazerg2@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/65532
Fixes: https://github.com/nodejs/node/issues/65527
Reviewed-By: James M Snell <jasnell@gmail.com>
diff --git a/lib/internal/worker/io.js b/lib/internal/worker/io.js
index 011c00b0149..f9dcd70da9a 100644
--- a/lib/internal/worker/io.js
+++ b/lib/internal/worker/io.js
@@ -15,6 +15,7 @@ const {
ReflectApply,
Symbol,
SymbolFor,
+ SymbolToStringTag,
} = primordials;
const {
@@ -208,6 +209,18 @@ ObjectDefineProperty(MessagePort.prototype, inspect.custom, {
},
});
+ObjectDefineProperty(MessagePort.prototype, SymbolToStringTag, {
+ __proto__: null,
+ configurable: true,
+ value: 'MessagePort',
+});
+
+ObjectDefineProperty(MessageChannel.prototype, SymbolToStringTag, {
+ __proto__: null,
+ configurable: true,
+ value: 'MessageChannel',
+});
+
function setupPortReferencing(port, eventEmitter, eventName) {
// Keep track of whether there are any workerMessage listeners:
// If there are some, ref() the channel so it keeps the event loop alive.
diff --git a/test/parallel/test-eventtarget-memoryleakwarning.js b/test/parallel/test-eventtarget-memoryleakwarning.js
index 38fc5efc9bd..c8c1faa2175 100644
--- a/test/parallel/test-eventtarget-memoryleakwarning.js
+++ b/test/parallel/test-eventtarget-memoryleakwarning.js
@@ -15,12 +15,12 @@ common.expectWarning({
'EventTarget. MaxListeners is 2. Use events.setMaxListeners() ' +
'to increase limit'],
['Possible EventTarget memory leak detected. 3 foo listeners added to ' +
- '[MessagePort [EventTarget]]. ' +
+ '[MessagePort]. ' +
'MaxListeners is 2. ' +
'Use events.setMaxListeners() to increase ' +
'limit'],
['Possible EventTarget memory leak detected. 3 foo listeners added to ' +
- '[MessagePort [EventTarget]]. ' +
+ '[MessagePort]. ' +
'MaxListeners is 2. ' +
'Use events.setMaxListeners() to increase ' +
'limit'],
diff --git a/test/parallel/test-messagechannel-string-tag.js b/test/parallel/test-messagechannel-string-tag.js
new file mode 100644
index 00000000000..d824f3e4ffc
--- /dev/null
+++ b/test/parallel/test-messagechannel-string-tag.js
@@ -0,0 +1,17 @@
+'use strict';
+
+require('../common');
+
+const assert = require('assert');
+
+const classesToBeTested = [ MessageChannel, MessagePort ];
+
+classesToBeTested.forEach((cls) => {
+ assert.strictEqual(cls.prototype[Symbol.toStringTag], cls.name);
+ assert.deepStrictEqual(Object.getOwnPropertyDescriptor(cls.prototype, Symbol.toStringTag),
+ { configurable: true, enumerable: false, value: cls.name, writable: false });
+});
+
+const channel = new MessageChannel();
+assert.strictEqual(Object.prototype.toString.call(channel), '[object MessageChannel]');
+assert.strictEqual(Object.prototype.toString.call(channel.port1), '[object MessagePort]');
diff --git a/test/parallel/test-worker-message-port-inspect-during-init-hook.js b/test/parallel/test-worker-message-port-inspect-during-init-hook.js
index 8f9678de1e9..d5784dceb71 100644
--- a/test/parallel/test-worker-message-port-inspect-during-init-hook.js
+++ b/test/parallel/test-worker-message-port-inspect-during-init-hook.js
@@ -12,7 +12,7 @@ async_hooks.createHook({
init: common.mustCall((id, type, triggerId, resource) => {
assert.strictEqual(
util.inspect(resource),
- 'MessagePort [EventTarget] { active: true, refed: false }');
+ 'MessagePort { active: true, refed: false }');
}, 2)
}).enable();