docs: def getfo(self, remotepath, fl, callback=None):
          """
          Copy a remote file (``remotepath``) from the SFTP server and write to
          an open file or file-like object, ``fl``.  Any exception raised by
          operations will be passed through.  This method is primarily provided
          as a convenience.
  
          :param object remotepath: opened file or file-like object to copy to
          :param str fl:
              the destination path on the local host or open file object
          :param callable callback:
              optional callback function (form: ``func(int, int)``) that accepts
              the bytes transferred so far and the total bytes to be transferred
          :return: the `number <int>` of bytes written to the opened file object
  
          .. versionadded:: 1.10
          """
          with self.open(remotepath, 'rb') as fr:
              file_size = self.stat(remotepath).st_size
              fr.prefetch()
              size = 0
              while True:
                  data = fr.read(32768)
                  fl.write(data)
                  size += len(data)
                  if callback is not None:
                      callback(size, file_size)
                  if len(data) == 0:
                      break
          return size