docs: def process(self, *args, **kwargs):
          """
          args: list of arguments for the `runnable`
          kwargs: dictionary of arguments for the `runnable`
          """
          try:
              timeout_seconds = self.timeout_timedelta.total_seconds()
              with timeout(self.run, timeout_seconds) as run:
                  run(*args, **kwargs)
          except Exception as e:
              if self.verbose:
                  if isinstance(e, TimeoutError):
                      logger.error('SafeTask timed out: %s', e, exc_info=True)
                  else:
                      logger.error('Error running SafeTask: %s',
                                   e, exc_info=True)
              self.on_error(e, *args, **kwargs)
          else:
              self.on_success(*args, **kwargs)
          finally:
              self.on_completion(*args, **kwargs)