class Faraday::Adapter::EMSynchrony::ParallelManager

def add(request, method, *args, &block)

`EM::HttpRequest` object.
Add requests to queue. The `request` argument should be a
def add(request, method, *args, &block)
  queue << {
    :request => request,
    :method => method,
    :args => args,
    :block => block
  }
end

def perform

Main `EM::Synchrony::Multi` performer.
def perform
  multi = ::EM::Synchrony::Multi.new
  queue.each do |item|
    method = "a#{item[:method]}".to_sym
    req = item[:request].send(method, *item[:args])
    req.callback(&item[:block])
    req_name = "req_#{multi.requests.size}".to_sym
    multi.add(req_name, req)
  end
  # Clear the queue, so parallel manager objects can be reused.
  @queue = []
  # Block fiber until all requests have returned.
  multi.perform
end

def queue

The request queue.
def queue
  @queue ||= []
end

def run

it in a reactor and fiber if needed.
Run all requests on queue with `EM::Synchrony::Multi`, wrapping
def run
  result = nil
  if !EM.reactor_running?
    EM.run {
      Fiber.new do
        result = perform
        EM.stop
      end.resume
    }
  else
    result = perform
  end
  result
end