void fireFailed(Throwable exception) { TaskEvent<Throwable> event = TaskEvent.failed(task, exception); LOG.debug("firing failed event: {}", event); for (TaskListener<? super T> listener : listeners) { listener.failed(event); } }