def METHOD_NAME(self) -> None:
    """Check and download until the file is a valid ZIP."""
    end = self._length - 1
    for start in reversed(range(0, end, self._chunk_size)):
        self._download(start, end)
        with self._stay():
            try:
                # For read-only ZIP files, ZipFile only needs
                # methods read, seek, seekable and tell.
                ZipFile(self)  # type: ignore
            except BadZipFile:
                pass
            else:
                break