docs: protected void invokeCallback(ICompletionListener listener, AbstractAsyncFuture future, Object userState) {
          try {
              ExecutorService executorService = CHFWBundle.getExecutorService();
              if (null == executorService) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
                      Tr.event(tc, "Unable to schedule callback, using this thread");
                  }
                  listener.futureCompleted(future, userState);
              } else {
                  if (null == this.myCallback) {
                      this.myCallback = new WorkCallback(listener, userState);
                  } else {
                      this.myCallback.myListener = listener;
                      this.myCallback.myState = userState;
                  }
                  executorService.execute(this.myCallback);
              }
          } catch (Throwable problem) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Error invoking callback, exception: " + problem + " : " + problem.getMessage());
              }
              FFDCFilter.processException(problem, getClass().getName() + ".invokeCallback", "182", this);
          }
      }