We're duplicating the boilerplate for this functionality in several places so we should consolidate it under an extension method like: `func sendWithRetry<R: Request>(_ request: R, timeout: TimeInterval, retryIf: (ErrorResponse) -> Bool)`
We're duplicating the boilerplate for this functionality in several places so we should consolidate it under an extension method like:
func sendWithRetry<R: Request>(_ request: R, timeout: TimeInterval, retryIf: (ErrorResponse) -> Bool)