Timeout is the only error that's really recoverable here, so retries should be restricted to that. I also generally dislike when there's an arbitrary decision about things like how many times to retry. IMO, it's not worth the extra code complexity unless you have a principled reasoning (like "retrying x times cuts the overall error rate by y%")