Miranda whenMoreResolved

__whenMoreResolved/1 is a Miranda message.

Notify the reactor when the reference is resolved, or is importantly closer to being resolved; specifically when it has become the same as a reference into a different vat (is a candidate for shortening).

to __whenMoreResolved(reactor) { reactor &lt;- run( recipient ) return null }
 * If the recipient is a near ref, then the Miranda method should be:
 * If the recipient is a local promise then it should buffer and forward the message normally.
 * If the recipient is a remote promise then

Original Javadoc
Used to implement when-catch and the "Ref"; it should not be called directly.

The Miranda behavior responds by doing 'reactor &lt;- run(self)'. If the reference never becomes resolved, the reactor is not invoked.

In the cooperative (non-malicious) case, the reactor will not be invoked more than once.

When sent on a reference, once the reference becomes resolved the reactor will be invoked with the resolution. Should the reactor be invoked with a non-broken reference, all earlier messages are guaranteed to have been successfully delivered.

Should the reference become broken, or should breakage prevent the reporting of fulfillment to the reactor, the reactor will be invoked with a broken reference. The reactor may be invoked more than once. In particular, if the reference becomes fulfilled and then broken, the reactor may hear of either or both of these events.

See also: Ref

Tests
? var r := null > def ret := 1 <- __whenMoreResolved(fn x { r := x + 1 }) > interp.waitAtTop(ret) > ret ? r ? [ret]
 * 1) value: 
 * 1) value: 2
 * 1) value: [null]