code: def until(self, func, message='', *args, **kwargs):
          
          value = None
          end_time = time.time() + self._timeout
          while True:
              value = func(*args, **kwargs)
              if self._debug:
                  print("Value from func within ActionWait: {}".format(value))
              if value:
                  break
  
              time.sleep(self._poll)
              self._poll *= 1.25
              if time.time() > end_time:
                  raise RuntimeError(message)
          return value
docs: Continues to execute the function until successful or time runs out.
  
          :param func: function to execute
          :param message: message to print if time ran out
          :param args: arguments
          :param kwargs: key word arguments
          :return: result of function or None