code: public V get(K k, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException {
          await(k, timeout, unit);
  
          return cache.get(k);
      }
docs: Retrieve the value associated with the given key, blocking as long as necessary up to the specified maximum.
  @param k The key.
  @param timeout The length of the timeout.
  @param unit The time unit of the timeout.
  @return The value associated with the key.
  @throws InterruptedException
  @throws TimeoutException