pipe1_exn t
returns a pipe of updates from t
. If the pipe is closed you
will be unsubscribed. pipe1_exn
raises in the same circumstances as
subscribe_exn
.
first_exn here t arity ~f
returns a deferred that becomes determined with value r
when the first event is published to t
where f
returns Some r
. first_exn
then
unsubscribes from t
, ensuring that f
is never called again after it returns
Some
. first_exn
raises if it can't subscribe to the bus, i.e. if subscribe_exn
raises. If f
raises, then first_exn
raises to the monitor in effect when
first_exn
was called. first_exn
takes time proportional to the number of bus
subscribers.