fn should_retry()

in cas_client/src/download_utils.rs [485:501]


    fn should_retry(&mut self, err: &CasClientError) -> bool {
        // we only care about retrying some error yielded by trying to deserialize the stream
        let CasClientError::CasObjectError(CasObjectError::InternalIOError(cas_object_io_err)) = err else {
            return false;
        };
        let Some(inner) = cas_object_io_err.get_ref() else {
            return false;
        };
        let Some(inner_reqwest_err) = inner.downcast_ref::<reqwest::Error>() else {
            return false;
        };
        // errors that indicate reading the body failed
        inner_reqwest_err.is_body()
            || inner_reqwest_err.is_decode()
            || inner_reqwest_err.is_timeout()
            || inner_reqwest_err.is_request()
    }