That creates a "either key OR weakmap keeps it alive", but we want "both key AND weakmap keep it alive" situation — i.e. it will leak in some cases when the map is alive.
Why would it? With tracked weak refs, we can unlink map entry both from map and key's destructor, so if any of them is collected, the entry will be collected as well. What we need to make sure is that GC correctly recognizes value's reference relations, so that GC has a chance to unlink relevant objects.