sig
  type 'a t
  val return : '-> 'Lwt.t
  val fail : exn -> 'Lwt.t
  val bind : 'Lwt.t -> ('-> 'Lwt.t) -> 'Lwt.t
  val ( >>= ) : 'Lwt.t -> ('-> 'Lwt.t) -> 'Lwt.t
  val catch : (unit -> 'Lwt.t) -> (exn -> 'Lwt.t) -> 'Lwt.t
  val try_bind :
    (unit -> 'Lwt.t) -> ('-> 'Lwt.t) -> (exn -> 'Lwt.t) -> 'Lwt.t
  val choose : 'Lwt.t list -> 'Lwt.t
  val ignore_result : 'Lwt.t -> unit
  val wait : unit -> 'Lwt.t
  val wakeup : 'Lwt.t -> '-> unit
  val wakeup_exn : 'Lwt.t -> exn -> unit
  val finalize : (unit -> 'Lwt.t) -> (unit -> unit Lwt.t) -> 'Lwt.t
  val poll : 'Lwt.t -> 'a option
  val apply : ('-> 'Lwt.t) -> '-> 'Lwt.t
end