docs: public boolean await(long timeout, TimeUnit unit) throws InterruptedException
      {
          long waitNanos = TimeUnit.NANOSECONDS.convert(timeout, unit);
  
          synchronized(this)
          {
              while ( (waitNanos > 0) && (state.get() == State.STARTED) && !hasLeadership.get() )
              {
                  long startNanos = System.nanoTime();
                  TimeUnit.NANOSECONDS.timedWait(this, waitNanos);
                  long elapsed = System.nanoTime() - startNanos;
                  waitNanos -= elapsed;
              }
          }
          return hasLeadership();
      }