'Marks the destination as "down" if an exception is thrown in the
context, except for CodeMessageException with code < 500.
If no exception is raised, marks the destination as "up".
Args:
destination (str)
clock (Clock)
store (DataStore)
retry_interval (int): The next retry interval taken from the
database in milliseconds, or zero if the last request was
successful.
min_retry_interval (int): The minimum retry interval to use after
a failed request, in milliseconds.
max_retry_interval (int): The maximum retry interval to use after
a failed request, in milliseconds.
multiplier_retry_interval (int): The multiplier to use to increase
the retry interval after a failed request.
backoff_on_404 (bool): Back off if we get a 404'

def __init__(self, destination, clock, store, retry_interval, min_retry_interval=((10 * 60) * 1000), max_retry_interval=(((24 * 60) * 60) * 1000), multiplier_retry_interval=5, backoff_on_404=False):

    self.clock = clock
    self.store = store
    self.destination = destination
    self.retry_interval = retry_interval
    self.min_retry_interval = min_retry_interval
    self.max_retry_interval = max_retry_interval
    self.multiplier_retry_interval = multiplier_retry_interval
    self.backoff_on_404 = backoff_on_404
