def send_request(type, conn, payload = nil, target = nil, options = {})
      payload ||= {}
      payload[:agent_identity] = @agent_identity
      Sender.instance.send_request(type, payload, target, options) do |r|
        reply = @serializer.dump(r) rescue '\"Failed to serialize response\"'
        CommandIO.instance.reply(conn, reply)
      end
      true
    end
def send_request(type, conn, payload = nil, target = nil, options = {})
      payload ||= {}
      payload[:agent_identity] = @agent_identity
      Sender.instance.send_request(type, payload, target, options) do |r|
        reply = @serializer.dump(r) rescue '\"Failed to serialize response\"'
        CommandIO.instance.reply(conn, reply)
      end
      true
    end
Helper method to send a request to a single target agent with a response expected
 The request is retried if the response is not received in a reasonable amount of time
 The request is timed out if not received in time, typically configured to 2 minutes
 The request is allowed to expire per the agent's configured time-to-live, typically 1 minute
 See Sender for details