'Iterates over the response data.  When stream=True is set on the
request, this avoids reading the content at once into memory for
large responses.  The chunk size is the number of bytes it should
read into memory.  This is not necessarily the length of each item
returned as decoding can take place.
If decode_unicode is True, content will be decoded using the best
available encoding based on the response.'

def iter_content(self, chunk_size=1, decode_unicode=False):

    def generate():
        if hasattr(self.raw, 'stream'):
            try:
                for chunk in self.raw.stream(chunk_size, decode_content=True):
                    (yield chunk)
            except ProtocolError as e:
                raise ChunkedEncodingError(e)
            except DecodeError as e:
                raise ContentDecodingError(e)
            except ReadTimeoutError as e:
                raise ConnectionError(e)
        else:
            while True:
                chunk = self.raw.read(chunk_size)
                if (not chunk):
                    break
                (yield chunk)
        self._content_consumed = True
    if (self._content_consumed and isinstance(self._content, bool)):
        raise StreamConsumedError()
    reused_chunks = iter_slices(self._content, chunk_size)
    stream_chunks = generate()
    chunks = (reused_chunks if self._content_consumed else stream_chunks)
    if decode_unicode:
        chunks = stream_decode_response_unicode(chunks, self)
    return chunks
