# File lib/fog/compute/ecloud/errors.rb, line 29
        def self.slurp(error)
          data = nil
          message = nil
          status_code = nil
          minor_code = nil

          if error.response
            status_code = error.response.status
            unless error.response.body.empty?
              begin
                document = Fog::ToHashDocument.new
                parser = Nokogiri::XML::SAX::PushParser.new(document)
                parser << error.response.body
                parser.finish

                data = document.body

                message = extract_message(data)
                minor_code = extract_minor_code(data)

              rescue => e
                Fog::Logger.warning("Received exception '#{e}' while decoding: #{error.response.body}")
                message = error.response.body
                data = error.response.body
              end
            end
          end

          new_error = super(error, message)
          new_error.instance_variable_set(:@response_data, data)
          new_error.instance_variable_set(:@status_code, status_code)
          new_error.instance_variable_set(:@minor_error_code, minor_code)
          new_error
        end