go
go copied to clipboard
clients/horizonclient: Adds an `IsHorizonAPITimeoutError` helper for detecting 504s.
PR Checklist
PR Structure
- [x] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
- [x] This PR avoids mixing refactoring changes with feature changes (split into two PRs otherwise).
- [x] This PR's title starts with name of package that is most changed in the PR, ex.
services/friendbot, orallordocif the changes are broad or impact many packages.
Thoroughness
- [x] This PR adds tests for the most critical parts of the new functionality or fixes.
- [ ] I've updated any docs (developer docs,
.mdfiles, etc... affected by this change). Take a look in thedocsfolder for a given service, like this one.
Release planning
- [x] I've updated the relevant CHANGELOG (here for Horizon) if needed with deprecations, added features, breaking changes, and DB schema changes.
- [ ] I've decided if this PR requires a new major/minor version according to semver, or if it's mainly a patch change. The PR is targeted at the next release branch if it's not a patch change.
What
This PR adds a new helper function IsHorizonAPITimeoutError to determine if an error returned by the Horizon client is 504 or not.
Why
Applications that use Horizon client will want to handle 504s. Some applications might want to retry the same transaction, some applications might want to return a special error so that its client can retry or handle it in another graceful way.
Known limitations
N/A
@Shaptic @leighmcculloch PTAL again. If you still prefer a more holistic approach, I can close this PR.