weak map shim for the browser and node.js