docs: public void await(long weight) throws InterruptedException {
          try {
              lock.lockInterruptibly();
              while (isPermit(weight) == false) {
                  condition.await();
              }
          } finally {
              lock.unlock();
          }
      }