def send_retryable_request(operation, payload, options = {}, &callback)
      connection = EM.connect('127.0.0.1', @listen_port, AgentConnection, @cookie, @thread_name, callback)
      EM.next_tick do
        connection.send_command(:name => :send_retryable_request, :type => operation,
                                :payload => payload, :options => options)
      end
    end
def send_retryable_request(operation, payload, options = {}, &callback)
      connection = EM.connect('127.0.0.1', @listen_port, AgentConnection, @cookie, @thread_name, callback)
      EM.next_tick do
        connection.send_command(:name => :send_retryable_request, :type => operation,
                                :payload => payload, :options => options)
      end
    end
Use the command protocol to send a retryable request. This class cannot reuse Cook's
 implementation of the command-proto request wrappers because we must gather credentials
 concurrently for performance reasons. The easiest way to do this is simply to open a
 new command proto socket for every distinct request we make.