def request(type, payload, target, options = {})
      params = {
        :type => type,
        :payload => payload,
        :target => target }
      make_request(:post, "/request", params, type.split("/")[2], options)
    end
def request(type, payload, target, options = {})
      params = {
        :type => type,
        :payload => payload,
        :target => target }
      make_request(:post, "/request", params, type.split("/")[2], options)
    end
Route a request to a single target with a response expected
 Automatically retry the request if a response is not received in a reasonable amount of time
 or if there is a non-delivery response indicating the target is not currently available
 Timeout the request if a response is not received in time, typically configured to 30 sec
 Because of retries there is the possibility of duplicated requests, and these are detected and
 discarded automatically for non-idempotent actions
 Allow the request to expire per the agent's configured time-to-live, typically 1 minute

 @param [String] type of request as path specifying actor and action
 @param [Hash, NilClass] payload for request
 @param [Hash, NilClass] target for request, which may be a specific agent (using :agent_id),
   one chosen randomly from potentially multiple targets (using :tags, :scope), or nil to
   route solely using type:
   [String] :agent_id serialized identity of specific target
   [Array] :tags that must all be associated with a target for it to be selected
   [Hash] :scope for restricting routing which may contain:
     [Integer] :account id that agents must be associated with to be included

 @option options [String] :request_uuid uniquely identifying this request; defaults to
   randomly generated
 @option options [Numeric] :time_to_live seconds before request expires and is to be ignored;
   non-positive value or nil means never expire

 @return [Result, NilClass] response from request

 @raise [Exceptions::Unauthorized] authorization failed
 @raise [Exceptions::ConnectivityFailure] cannot connect to server, lost connection
   to it, or it is out of service or too busy to respond
 @raise [Exceptions::RetryableError] request failed but if retried may succeed
 @raise [Exceptions::Terminating] closing client and terminating service
 @raise [Exceptions::InternalServerError] internal error in server being accessed