def request(*args, &block)
      authenticate! unless session_id
      retries = authentication_retries
      begin
        perform_request(*args, &block)
      rescue Savon::SOAP::Fault => e
        if e.message =~ /INVALID_SESSION_ID/ && authentication_handler && retries > 0
          authenticate!
          retries -= 1
          retry
        end
        raise
      end
    end
def request(*args, &block)
      authenticate! unless session_id
      retries = authentication_retries
      begin
        perform_request(*args, &block)
      rescue Savon::SOAP::Fault => e
        if e.message =~ /INVALID_SESSION_ID/ && authentication_handler && retries > 0
          authenticate!
          retries -= 1
          retry
        end
        raise
      end
    end
Internal: Performs a SOAP request. If the session is invalid, it will
 attempt to reauthenticate by called the reauthentication handler if
 present.