The SDK should have a mechanism to cope with failed data uploads because of intermittent network errors or other issues. The retry strategy should be:
- Retry network errors (socket timed out, etc.)
- Retry server errors (HTTP 5xx)
- Do NOT retry client errors (HTTP 4xx) except HTTP 429