Observe_lwt.IOObserve effects backed by Lwt promises and callback-local bindings.
Dynamic bindings propagate through Lwt callbacks registered inside their scope. They do not propagate through Lwt_preemptive.detach, OS threads, or another I/O implementation. Native Lwt.Canceled remains control flow.
type state = tval return : 'a -> 'a tval observe : (unit -> 'a t) -> 'a Observe.IO.outcome tObserve effect settlement as the exact result or the same exception and raw backtrace at the runtime failure boundary. Cancellation remains a classified Raised outcome.
val repropagate : exn -> Stdlib.Printexc.raw_backtrace -> 'a tRe-propagate that exception through the runtime effect.
val create_key : unit -> 'a keyReturn a fresh generative dynamic-context key.
Restore the previous binding after success, exception, or native cancellation.
Run finally exactly once after the callback settles. When finally returns normally, preserve the callback's result, exception, or native cancellation. The cleanup hook must not raise.
val is_control_exception : state -> exn -> boolIdentify native cancellation and other control-flow exceptions that the core must preserve rather than contain.
module Clock : sig ... endmodule Identity : sig ... endmodule Sampling : sig ... endmodule Console : sig ... end