    # File lib/fog/openstack/compute.rb, line 278
            def request(params)
              begin
                response = @connection.request(params.merge({
                  :headers  => {
                    'Content-Type' => 'application/json',
                    'X-Auth-Token' => @auth_token
                  }.merge!(params[:headers] || {}),
                  :host     => @host,
                  :path     => "#{@path}/#{@tenant_id}/#{params[:path]}",
                  :query    => params[:query] || ('ignore_awful_caching' << Time.now.to_i.to_s)
                }))
              rescue Excon::Errors::Unauthorized => error
                if error.response.body != 'Bad username or password' # token expiration
                  @openstack_must_reauthenticate = true
                  authenticate
                  retry
                else # Bad Credentials
                  raise error
                end
              rescue Excon::Errors::HTTPStatusError => error
                raise case error
                  when Excon::Errors::NotFound
                    Fog::Compute::OpenStack::NotFound.slurp(error)
                  else
                    error
                  end
              end

              unless response.body.empty?
                response.body = Fog::JSON.decode(response.body)
              end

              response
            end