I think we might not need both a lock and a token. We should be able to set a TTL on the lock (currently lock value), and make the lock value the current token value. This might simplify things in this file a bit. Other than for logging purposes, it looks like you effectively loose the lock past expiry, so it doesn't really matter if we steal or just grab it past expiration.