In an async interface that's exactly what one would expect. Having to keep an extra ref would be inconsistent.
You can still get the behaviour you want in your synchronous Browse class by making it a wrapper with a one way ref to a separate object that contains the callback. It'd work just like the destruct keys that wraps the cyclic node trees in the xslt engine, but foolproof since the callback object doesn't need to be externally accessible at all.