code: def StreamMedia(self, callback=None, finish_callback=None,
                      additional_headers=None, use_chunks=True):
          
          callback = callback or self.progress_callback
          finish_callback = finish_callback or self.finish_callback
  
          self.EnsureInitialized()
          while True:
              if self.__initial_response is not None:
                  response = self.__initial_response
                  self.__initial_response = None
              else:
                  end_byte = self.__ComputeEndByte(self.progress,
                                                   use_chunks=use_chunks)
                  response = self.__GetChunk(
                      self.progress, end_byte,
                      additional_headers=additional_headers)
              if self.total_size is None:
                  self.__SetTotal(response.info)
              response = self.__ProcessResponse(response)
              self._ExecuteCallback(callback, response)
              if (response.status_code == http_client.OK or
                      self.progress >= self.total_size):
                  break
          self._ExecuteCallback(finish_callback, response)
docs: Stream the entire download.
  
          Args:
            callback: (default: None) Callback to call as each chunk is
                completed.
            finish_callback: (default: None) Callback to call when the
                download is complete.
            additional_headers: (default: None) Additional headers to
                include in fetching bytes.
            use_chunks: (bool, default: True) If False, ignore self.chunksize
                and stream this download in a single request.
  
          Returns:
              None. Streams bytes into self.stream.