code: def poll_for_exceptionless_callable(callable, attempts, interval):
      '''Poll with a given callable for a specified number of times.
  
      :param callable: callable to invoke in loop -- if no exception is raised
                      the call is considered succeeded
      :param attempts: number of iterations to attempt
      :param interval: seconds to wait before next attempt
      '''
  
      @wraps(callable)
      def poll(*args, **kwargs):
          for attempt in range(attempts):
              try:
                  return callable(*args, **kwargs)
              except Exception as ex:
                  if attempt == attempts-1:
                      raise MaximumAttemptsReached(ex)
                  time.sleep(interval)
                  continue
      return polf poll_for_exceptionless_callable(callable, attempts, interval):
      '''Poll with a given callable for a specified number of times.
  
      :param callable: callable to invoke in loop -- if no exception is raised
                      the call is considered succeeded
      :param attempts: number of iterations to attempt
      :param interval: seconds to wait before next attempt
      '''
  
      @wraps(callable)
      def poll(*args, **kwargs):
          for attempt in range(attempts):
              try:
                  return callable(*args, **kwargs)
              except Exception as ex:
                  if attempt == attempts-1:
                      raise MaximumAttemptsReached(ex)
                  time.sleep(interval)
                  continue
      return poll
docs: Poll with a given callable for a specified number of times.
  
      :param callable: callable to invoke in loop -- if no exception is raised
                      the call is considered succeeded
      :param attempts: number of iterations to attempt
      :param interval: seconds to wait before next attempt