docs: def _run_coro(self, value):
          """ Start the coroutine as task """
  
          # when LAST_DISTINCT is used only start coroutine when value changed
          if self._options.mode is MODE.LAST_DISTINCT and \
                  value == self._last_emit:
              self._future = None
              return
  
          # store the value to be emitted for LAST_DISTINCT
          self._last_emit = value
  
          # publish the start of the coroutine
          self.scheduled.notify(value)
  
          # build the coroutine
          values = value if self._options.unpack else (value,)
          coro = self._options.coro(*values, *self._options.args,
                                    **self._options.kwargs)
  
          # create a task out of it and add ._future_done as callback
          self._future = asyncio.ensure_future(coro)
          self._future.add_done_callback(self._future_done)