text: import time
  
  
  class Delay(object):
      maxToSendDelay = 10 ** -3  # 0.05
      minToSendDelay = 10 ** -5  # 0.01
  
      def __init__(self, start=0):
          self._next = start
  
      # TODO: explain why this logic is like it is. And add tests that
      #       show that it actually does what it needs to do.
      def __call__(self):
          ts = time.time()
          delay = 0
          if ts >= self._next:
              delay = self.minToSendDelay
              self._next = ts + self.minToSendDelay
          else:
              delay = (self._next - ts) + self.maxToSendDelay
              self._next += self.maxToSendDelay
          return delay
  