code: @Override
  	public void handleAsyncException(String message, Throwable exception) {
  		if (isRunning) {
  			// only fail if the task is still running
  			getEnvironment().failExternally(exception);
  		}
  	}
docs: Handles an exception thrown by another thread (e.g. a TriggerTask),
  other than the one executing the main task by failing the task entirely.
  
  <p>In more detail, it marks task execution failed for an external reason
  (a reason other than the task code itself throwing an exception). If the task
  is already in a terminal state (such as FINISHED, CANCELED, FAILED), or if the
  task is already canceling this does nothing. Otherwise it sets the state to
  FAILED, and, if the invokable code is running, starts an asynchronous thread
  that aborts that code.
  
  <p>This method never blocks.