Once ES6 support is everywhere, you should be able to use WeakMap and WeakSet.
[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
You can actually polyfill WeakMap and WeakSet. You can't do the same for weak references.