docs: protected void executeWithErrorPropagation(ActivityExecution execution, Callable<Void> toExecute) throws Exception {
      String activityInstanceId = execution.getActivityInstanceId();
      try {
        toExecute.call();
      } catch (Exception ex) {
        if (activityInstanceId.equals(execution.getActivityInstanceId())) {
  
          try {
            propagateException(execution, ex);
          }
          catch (ErrorPropagationException e) {
            LOG.errorPropagationException(activityInstanceId, e.getCause());
            // re-throw the original exception so that it is logged
            // and set as cause of the failure
            throw ex;
          }
  
        }
        else {
          throw ex;
        }
      }
    }