We currently use plain objects in many places where users can pass in keys. Even with Object.create(null), users can pass in the key __proto__ which will happily set the prototype, for example to an object if that is what we set as a value.
ES6 / harmony Map and Set (see http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets) fix this problem (and allow objects as keys), so we should use them. Native Map / Set is not yet complete in node 0.10, so we should probably use one of the existing shims to get it:
https://github.com/paulmillr/es6-shim
https://github.com/Benvie/harmony-collections
The es6 shim also gives us more goodies which might be useful to have for cleaner code. We should not go overboard though, and only use features where a native implementation is likely to happen soon.
Version: unspecified
Severity: normal