Current.PoolResource pools, to control how many jobs can use a resource at a time. To use a pool within a job, pass the pool to Job.start or call Job.use_pool.
val create : label:string -> int -> unit tcreate ~label n is a pool with n resources.
val of_fn :
label:string ->
(priority:priority -> switch:Switch.t -> 'a Lwt.t * (unit -> unit Lwt.t)) ->
'a tof_fn ~label f is a pool that uses f to get a resource. It should return a promise for the resource and a function that cancels the request (if still queued). Return the resource to the pool when switch is turned off.