You can’t always retry a 5xx

Networks are unreliable. Even when services are otherwise healthy transient failures like timeouts, dropped connections, and DNS blips can all cause your application to fail for no good reason. Sometimes that’s OK. If you’re building a simple system that only makes a few network requests then it’s reasonable to let these transient failures bubble up and let the caller decide how they’d like to…