code: public synchronized final void completed(@CheckForNull Throwable error) {
          if (executor!=null) {
              executor.completedAsynchronous(error);
          } else {
              result = error == null ? NULL : error;
          }
      }
docs: To be called when the task is actually complete.
  @param error normally null (preferable to handle errors yourself), but may be specified to simulate an exception from {@link Executable#run}, as per {@link ExecutorListener#taskCompletedWithProblems}