void  WorkerThread::executeEventTask(ATask* task, bool exec) {
  EventTask *eventTask = reinterpret_cast<EventTask*>(task);

  if (eventTask) {
    try {
      // call every subscriber.
      if (exec) {
        eventTask->_callback();
      }

      EventTask::returnToPool(eventTask);

    } catch (const std::exception&) {
      EventTask::returnToPool(eventTask);
      throw;
    }

  } else {
    CRITICAL("Cant reinterpret_cast an EventTask");
  }
}