sig
  val detach : ('a -> 'b) -> 'a -> 'b Lwt.t
  val undetach : ('a -> 'b Lwt.t) -> 'a -> unit
  val yield : unit -> unit Lwt.t
  val run : 'a Lwt.t -> 'a
end