code: def iter_content(self, chunk_size=1, decode_unicode=False):
          
          def generate():
              try:
                  # Special case for urllib3.
                  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)
              except AttributeError:
                  # Standard file-like object.
                  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()
          # simulate reading small chunks of the content
          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
docs: 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.