code: def delay(self):
          
          invocation = time.monotonic()
          interval = invocation - self._last_invocation
          self._last_invocation = invocation
  
          if interval > self._reset_time:
              self._exp = 0
  
          self._exp = min(self._exp + 1, self._max)
          return self._randfunc(0, self._base * 2 ** self._exp)
docs: Compute the next delay
  
          Returns the next delay to wait according to the exponential
          backoff algorithm.  This is a value between 0 and base * 2^exp
          where exponent starts off at 1 and is incremented at every
          invocation of this method up to a maximum of 10.
  
          If a period of more than base * 2^11 has passed since the last
          retry, the exponent is reset to 1.