sig
  type 'a t = 'Throttle.t
  val invariant : 'Core.Std.Invariant.inv -> 'a t Core.Std.Invariant.inv
  val create : continue_on_error:bool -> max_concurrent_jobs:int -> unit t
  val create_with : continue_on_error:bool -> 'a list -> 'a t
  type 'a outcome = [ `Aborted | `Ok of '| `Raised of exn ]
  module Job :
    sig
      type ('a, 'b) t = ('a, 'b) Throttle.Job.t
      val create : ('-> 'Deferred.t) -> ('a, 'b) t
      val result : ('a, 'b) t -> 'b outcome Deferred.t
    end
  val enqueue_job : 'a t -> ('a, 'b) Job.t -> unit
  val enqueue' : 'a t -> ('-> 'Deferred.t) -> 'b outcome Deferred.t
  val enqueue : 'a t -> ('-> 'Deferred.t) -> 'Deferred.t
  val prior_jobs_done : 'a t -> unit Deferred.t
  val num_jobs_waiting_to_start : 'a t -> int
  module Sequencer :
    sig
      type 'a t = 'Throttle.Sequencer.t
      val create : ?continue_on_error:bool -> '-> 'a t
      val enqueue : 'a t -> ('-> 'Deferred.t) -> 'Deferred.t
      val num_jobs_waiting_to_start : 'a t -> int
    end
  val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
end