sig type 'a t exception Timeout val create : unit -> 'a Lwt_queue.t val add : 'a -> 'a Lwt_queue.t -> unit val take : ?timeout:float -> 'a Lwt_queue.t -> 'a Lwt.t end