sig
  type 'a t
  val create :
    int ->
    ?check:('a -> (bool -> unit) -> unit) ->
    (unit -> 'a Lwt.t) -> 'a Lwt_pool.t
  val use : 'a Lwt_pool.t -> ('a -> 'b Lwt.t) -> 'b Lwt.t
end