class Excon::Middleware::ResponseParser

def response_call(datum)

def response_call(datum)
  unless datum.has_key?(:response)
    datum = Excon::Response.parse(datum[:connection].send(:socket), datum)
    # only requests without a :response_block add 'deflate, gzip' to the TE header.
    unless datum[:response_block]
      if key = datum[:response][:headers].keys.detect {|k| k.casecmp('Transfer-Encoding') == 0 }
        encodings = Utils.split_header_value(datum[:response][:headers][key])
        if encoding = encodings.last
          if encoding.casecmp('deflate') == 0
            # assume inflate omits header
            datum[:response][:body] = Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(datum[:response][:body])
            encodings.pop
          elsif encoding.casecmp('gzip') == 0 || encoding.casecmp('x-gzip') == 0
            datum[:response][:body] = Zlib::GzipReader.new(StringIO.new(datum[:response][:body])).read
            encodings.pop
          end
          datum[:response][:headers][key] = encodings.join(', ')
        end
      end
    end
  end
  @stack.response_call(datum)
end