long left = timeout > 0 ? timeout : Long.MAX_VALUE;
long start = System.currentTimeMillis();
while (left > 0) {
// Another node we lost to who should take precedence
// over ourselves in competition for the lock
ClusterNode superiorCompetitor = null;
// Only continue if category is unlocked
if (category.state.compareAndSet(ClusterLockState.State.UNLOCKED, ClusterLockState.State.REMOTE_LOCKING)) {
// Category state is now REMOTE_LOCKING, so other nodes will fail
// in attempts to acquire on this node unless the caller is "superior"