code: @Override
      public void await() throws InterruptedException {
          queueLock.lock();
          try {
              while(test()) {
                  condition.await();
              }
          }
          finally {
              queueLock.unlock();
          }
      }
docs: wake if signal is called, or wait indefinitely