Since GC detects isolated islands of object graph to find candidates for removal from memory and WeakMap does not break island boundaries with it's weak references WeakMap -> KeyObject
then it would make sense for this reference WeakMap -> Value -> KeyObject
to also not break island boundaries with weak WeakMap -> Value
reference, while Value -> KeyObject
reference is obviously strong.
Example:
let o = {test:1};
let map = new WeakMap();
map.set(o, {strongRef: o});
o = null; // clear last reference on {test:1}
// will {test:1} be GCed after this ?