sig
type 'a m = 'a Lwt.t
val return : 'a -> 'a Lwt.t
val bind : ('a -> 'b Lwt.t) -> 'a Lwt.t -> 'b Lwt.t
val bind_rev : 'a Lwt.t -> ('a -> 'b Lwt.t) -> 'b Lwt.t
val error : exn -> 'a Lwt.t
val catch : (unit -> 'a Lwt.t) -> (exn -> 'a Lwt.t) -> 'a Lwt.t
end