code: @Override
      public T get() throws InterruptedException {
          while (true) {
              synchronized (this) {
                  if (completed) {
                      return results == null || results.isEmpty()
                          ? null
                          : results.get(0);
                  }
                  wait();
              }
          }
      }
docs: Waits for the event to be completed (see {@link #isDone()})
  and returns the first (or only) result.
  
  @see Future#get()