code: def submit(request)
        url = request.to_url
        ActiveSupport::Notifications.instrument("amazon_flex_pay.api", :action => request.action_name, :request => url) do |payload|
          begin
            http = RestClient.get(url)
  
            payload[:response] = http.body
            payload[:code] = http.code
  
            response = request.class::Response.from_xml(http.body)
            response.request = request
            response
  
          rescue RestClient::BadRequest, RestClient::Unauthorized, RestClient::Forbidden => e
            payload[:response] = e.http_body
            payload[:code] = e.http_code
  
            er = AmazonFlexPay::API::BaseRequest::ErrorResponse.from_xml(e.response.body)
            klass = AmazonFlexPay::API.const_get(er.errors.first.code)
            raise klass.new(er.errors.first.code, er.errors.first.message, er.request_id, request)
          end
        end
      end
docs: This compiles an API request object into a URL, sends it to Amazon, and processes
   the response.