sig
  type 'a t
  val bind :
    'Async.Std.Deferred.t ->
    ('-> 'Async.Std.Deferred.t) -> 'Async.Std.Deferred.t
  val both :
    'Async.Std.Deferred.t ->
    'Async.Std.Deferred.t -> ('a * 'b) Async.Std.Deferred.t
  val all : 'Async.Std.Deferred.t list -> 'a list Async.Std.Deferred.t
  val any : 'Async.Std.Deferred.t list -> 'Async.Std.Deferred.t
  module List :
    sig
      val fold :
        'a list ->
        '->
        ('-> '-> 'Async.Std.Deferred.t) -> 'Async.Std.Deferred.t
      val find :
        'a list ->
        ('-> bool Async.Std.Deferred.t) -> 'a option Async.Std.Deferred.t
      val map :
        ?how:[ `Parallel | `Sequential ] ->
        'a list ->
        ('-> 'Async.Std.Deferred.t) -> 'b list Async.Std.Deferred.t
      val iter :
        ?how:[ `Parallel | `Sequential ] ->
        'a list ->
        ('-> unit Async.Std.Deferred.t) -> unit Async.Std.Deferred.t
      val filter :
        ?how:[ `Parallel | `Sequential ] ->
        'a list ->
        ('-> bool Async.Std.Deferred.t) -> 'a list Async.Std.Deferred.t
    end
end