An Async extension of Core_kernel.Bus. Functions that share the same name and types as those in Core_kernel.Bus are direct calls to the same.
first_exn here t arity ~f returns a deferred that becomes determined with value
when the first event is published to
t, ensuring that
f is never called again after it returns
first_exn raises if it can't subscribe to the bus, i.e. 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