@Override
      public void await() throws ProcedureSuspendedException {
        ProcedureFutureUtil.suspend(proc);
      }
Lock by a procedure. You can release the lock in another thread.
<p>
When the procedure can not get the lock immediately, a ProcedureSuspendedException will be
thrown to suspend the procedure. And when we want to wake up a procedure, we will call the
{@code wakeUp} action. Usually in the {@code wakeUp} action you should add the procedure back
to procedure scheduler.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNodeLock.java