Calls self._loop.create_task with a safe (== with logged exception) coroutine. When run() ends, these tasks
            are automatically cancelled

def _create_safe_task(self, coroutine):
        """ Calls self._loop.create_task with a safe (== with logged exception) coroutine. When run() ends, these tasks
            are automatically cancelled"""
        task = self._loop.create_task(coroutine)
        self.__asyncio_tasks_running.add(task)
        task.add_done_callback(self.__remove_safe_task)