code: private int externalAwaitDone() {
          boolean interrupted = false;
          int s;
          while ((s = status) >= 0) {
              if (U.compareAndSwapInt(this, STATUS, s, s | SIGNAL)) {
                  synchronized (this) {
                      if (status >= 0) {
                          try {
                              wait();
                          } catch (InterruptedException ie) {
                              interrupted = true;
                          }
                      }
                      else
                          notifyAll();
                  }
              }
          }
          if (interrupted)
              Thread.currentThread().interrupt();
          return s;
      }
docs: Blocks a non-worker-thread until completion.
  @return status upon completion