docs: def start(self, transactional=False, async=False, rpc=None):
          """Insert the task into the requested queue, 'default' if non given.
  
          If a TransientError is hit the task will re-insert the task. If a
          TaskAlreadyExistsError or TombstonedTaskError is hit the task will
          silently fail.
  
          If the async flag is set, then the add will be done asynchronously and
          the return value will be the rpc object; otherwise the return value is
          the task itself. If the rpc kwarg is provided, but we're not in async
          mode, then it is ignored.
          """
          from google.appengine.api import taskqueue
  
          task = self.to_task()
          queue = taskqueue.Queue(name=self.get_queue())
          retry_transient = self._options.get('retry_transient_errors', True)
          retry_delay = self._options.get('retry_delay', RETRY_SLEEP_SECS)
  
          add = queue.add
          if async:
              add = partial(queue.add_async, rpc=rpc)
  
          try:
              ret = add(task, transactional=transactional)
          except taskqueue.TransientError:
              # Always re-raise for transactional insert, or if specified by
              # options.
              if transactional or not retry_transient:
                  raise
  
              time.sleep(retry_delay)
  
              ret = add(task, transactional=transactional)
          except (taskqueue.TaskAlreadyExistsError,
                  taskqueue.TombstonedTaskError):
              return
  
          # TODO: Return a "result" object.
          return ret