With a more thorough inspection, I realize that you would also need to track the original argument for your key in the WeakMap. Coercing to promise would lose the object identity of the key.