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()
}