code: public void await(K k, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException {
          if (!acquireLock(k).await(timeout, unit)) {
              throw new TimeoutException("Wait time for retrieving value for key " + k + " exceeded " + timeout + " " + unit);
          }
      }
docs: Waits until the key has been assigned a value, up to the specified maximum.
  @param k THe key to wait for.
  @param timeout The maximum time to wait.
  @param unit The time unit of the timeout.
  @throws InterruptedException
  @throws TimeoutException