So it doesn't look like the pisi patch I'm doing is doing retries on all the places I'd want, primarily on the bytes read error. It does for more (IOError, OSError, various content length issues) but the way it is setting the read timeout is effectively that it sets pycurl options for LOW_SPEED_LIMIT and LOW_SPEED_TIME. But here's the thing, curl is super dumb and actually returns a CURL_EOK (treating everything like it was fine) if it hits a speed limit, see: https://curl.haxx.se/libcurl/c/CURLOPT_LOW_SPEED_LIMIT.html
Since it returns an OK, it can't be handled (seemingly) by urlgrabber (the python library eopkg uses) or with the underlying pycurl curl object. Which means we can't handle it in eopkg / pisi.
So it should handle the unsatisfiable error (416) and the like, but not the read timeout. Sorry, I tried but unfortunately this codebase is well...we really need
sol (our planned rewrite) and I'll leave it at that >.<