Promise.XtExplicit transaction log passing on promises.
resolve u v resolves the promise corresponding to the resolver u to the value v. Any awaiters of the corresponding promise are then unblocked.
await t either immediately returns the resolved value of the promise t or blocks until the promise t is resolved.
peek t immediately returns either the resolved value of the promise t or None in case the promise hasn't yet been resolved.
is_resolved t determines whether the promise t has already been resolved.
await_exn t is equivalent to match await t with v -> v | exception e -> raise e.
resolve_ok u v is equivalent to resolve u (Ok v).