'Retry the effect multiple times with exponential backoff between
retries.'

def test_exponential_backoff(self):

    divisors = [0, 0, 0, 1]
    def tester():
        x = divisors.pop(0)
        return (1 / x)
    seq = [(Delay(1), (lambda ignore: None)), (Delay(2), (lambda ignore: None)), (Delay(4), (lambda ignore: None))]
    retrier = retry_effect_with_timeout(Effect(Func(tester)), timeout=10, time=self.get_time())
    result = perform_sequence(seq, retrier)
    self.assertEqual(result, 1)
