diff options
author | Jordan Harband <ljharb@gmail.com> | 2019-02-19 16:00:06 -0800 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-03-13 00:07:42 +0000 |
commit | 377c5835e8bfcd04273f24a244b2ba4aff76a27c (patch) | |
tree | 1595f9d38542b82502761b4ba802ce36fb5b3135 /test/parallel/test-domain-async-id-map-leak.js | |
parent | 8cbbe73553d2c623f2528350062d57dbf5305246 (diff) | |
download | android-node-v8-377c5835e8bfcd04273f24a244b2ba4aff76a27c.tar.gz android-node-v8-377c5835e8bfcd04273f24a244b2ba4aff76a27c.tar.bz2 android-node-v8-377c5835e8bfcd04273f24a244b2ba4aff76a27c.zip |
domain: set `.domain` non-enumerable on resources
In particular, this comes into play in the node repl, which apparently
enables domains by default. Whenever any Promise gets inspected, a
`.domain` property is displayed, which is *very confusing*, especially
since it has some kind of WeakReference attached to it, which is not yet
a language feature.
This change will prevent it from showing up in casual inspection, but
will leave it available for use.
PR-URL: https://github.com/nodejs/node/pull/26210
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'test/parallel/test-domain-async-id-map-leak.js')
-rw-r--r-- | test/parallel/test-domain-async-id-map-leak.js | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/test/parallel/test-domain-async-id-map-leak.js b/test/parallel/test-domain-async-id-map-leak.js index e720241841..8c03aa9401 100644 --- a/test/parallel/test-domain-async-id-map-leak.js +++ b/test/parallel/test-domain-async-id-map-leak.js @@ -6,6 +6,7 @@ const assert = require('assert'); const async_hooks = require('async_hooks'); const domain = require('domain'); const EventEmitter = require('events'); +const isEnumerable = Function.call.bind(Object.prototype.propertyIsEnumerable); // This test makes sure that the (async id → domain) map which is part of the // domain module does not get in the way of garbage collection. @@ -21,7 +22,9 @@ d.run(() => { emitter.linkToResource = resource; assert.strictEqual(emitter.domain, d); + assert.strictEqual(isEnumerable(emitter, 'domain'), false); assert.strictEqual(resource.domain, d); + assert.strictEqual(isEnumerable(resource, 'domain'), false); // This would otherwise be a circular chain now: // emitter → resource → async id ⇒ domain → emitter. |