code: public void await(long timeoutMillis) throws InterruptedException, TimeoutException {
          if (released.get()) {
              return;
          }
  
          if (!impl.tryAcquire(timeoutMillis, TimeUnit.MILLISECONDS)) {
              throw new TimeoutException("Timeout expired prior to latch becoming available.");
          }
      }
docs: Block until another thread calls release, or the thread is interrupted.
  
  @param timeoutMillis Timeout, in milliseconds, to wait for the release.
  @throws InterruptedException If the operation was interrupted while waiting.
  @throws TimeoutException     If the timeout expired prior to being able to await the release.