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