sig
  type 'a t
  val create : unit -> 'a AQueue.t
  val push : 'a AQueue.t -> 'a -> unit
  val pop : 'a AQueue.t -> 'a Async.Std.Deferred.t
end