code: def stream_download(self, data, callback):
          # type: (Union[requests.Response, ClientResponse], Callable) -> Iterator[bytes]
          
          block = self.config.connection.data_block_size
          try:
              # Assume this is ClientResponse, which it should be if backward compat was not important
              return cast(ClientResponse, data).stream_download(block, callback)
          except AttributeError:
              try:
                  # Assume this is the patched requests.Response from "send"
                  return data._universal_http_response.stream_download(block, callback)  # type: ignore
              except AttributeError:
                  # Assume this is a raw requests.Response
                  from .universal_http.requests import RequestsClientResponse
                  response = RequestsClientResponse(None, data)
                  return response.stream_download(block, callback)
docs: Generator for streaming request body data.
  
          :param data: A response object to be streamed.
          :param callback: Custom callback for monitoring progress.