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