code: def _prepare(self, kwargs=None):
          
          if kwargs is not None:
              # Note: This will overwrite existing keys in self.args.
              #       This is the wanted behavior.
              self.args.update(kwargs)
  
          if asyncio.iscoroutinefunction(self.func):
              task = asyncio.ensure_future(self.func(**self.args))
          else:
              # FIXME: is that clean enough ?
              task = asyncio.get_event_loop() \
                     .run_in_executor(None,
                                      functools.partial(self.func,
                                                        **self.args))
  
          return task
docs: Updates the function arguments and creates a :class:`asyncio.Task`
          from the Action.
  
          *kwargs* is an optional dictionnary of additional arguments to pass to
          the Action function.
  
          .. warning::
              *kwargs* will overwrite existing keys in *self.args*.
  
          .. note::
              If the Action func is blocking (not a coroutine function), it will
              be executed in an `Executor`_.
  
          .. _Executor: https://docs.python.org/3/library/asyncio-eventloop.html#executor