# File lib/uber-s3/response.rb, line 23
    def success?
      return if status < 400 || body.to_s.empty?
      
      # Errors are XML
      doc = Util::XmlDocument.new(body)
      
      self.error_key      = doc.xpath('//Error/Code').first.text
      self.error_message  = doc.xpath('//Error/Message').first.text
      
      error_klass = instance_eval("Error::#{error_key}") rescue nil
      
      if error_klass.nil?
        raise Error::Unknown, "HTTP Response: #{status}, Body: #{body}"
      else
        raise error_klass.new(error_key, error_message)
      end
    end