ResponseFilter in charge of async request retries on server errors. The filter is applied before the response reaches the
ResponseAsyncHandler, but calls upon the handler of a given request to track the retry count.
Due to the idempotent nature of push requests, the client will by default not retry on a POST request if it returns a 5xx.
If the client user decides to do so, a retry predicate may be created and passed in by the
UrbanAirshipClient
builder.
The default predicate logic allows for retries on all non-POST 5xxs. The maximum non-post request retry limit is also
configured in the
UrbanAirshipClient
builder and defaults to 10.
If the count is below the max retry limit and the predicate allows for a retry, the request will be replayed with an
exponential backoff. If the limit is reached and the predicate allows for a retry, a response is returned with the status code of the failed request.