code: def write(self, file=None, callback=None):
          '''Write the contents of the body to the optionally provided file and
          providing progress to the optional callback. The callback will be
          invoked 3 different ways:
  
          * First as ``callback(start=self)``
          * For each chunk of data written as
            ``callback(wrote=chunk_size_in_bytes, total=all_byte_cnt)``
          * Upon completion as ``callback(finish=self)``
  
          :param file: file name or file-like object
          :param callback: optional progress callback
          '''
          if not file:
              file = self.name
          if not file:
              raise ValueError('no file name provided or discovered in response')
          if hasattr(file, 'write'):
              self._write(file, callback)
          else:
              with atomic_open(file, 'wb') as fp:
                  self._write(fp, callbackf write(self, file=None, callback=None):
          '''Write the contents of the body to the optionally provided file and
          providing progress to the optional callback. The callback will be
          invoked 3 different ways:
  
          * First as ``callback(start=self)``
          * For each chunk of data written as
            ``callback(wrote=chunk_size_in_bytes, total=all_byte_cnt)``
          * Upon completion as ``callback(finish=self)``
  
          :param file: file name or file-like object
          :param callback: optional progress callback
          '''
          if not file:
              file = self.name
          if not file:
              raise ValueError('no file name provided or discovered in response')
          if hasattr(file, 'write'):
              self._write(file, callback)
          else:
              with atomic_open(file, 'wb') as fp:
                  self._write(fp, callback)
docs: Write the contents of the body to the optionally provided file and
          providing progress to the optional callback. The callback will be
          invoked 3 different ways:
  
          * First as ``callback(start=self)``
          * For each chunk of data written as
            ``callback(wrote=chunk_size_in_bytes, total=all_byte_cnt)``
          * Upon completion as ``callback(finish=self)``
  
          :param file: file name or file-like object
          :param callback: optional progress callback