Weak reference semantics - why does a dead weak ref keep its value alive?