type Lock struct {
// contains filtered or unexported fields
}
Lock locks the node once there the join or the init is at a point
where there is no turning back and the other operation does not need
to continue.
This can be viewed as a state machine with two states: unlocked and locked.
There is no way to unlock, so the state changes only once from unlock to
locked.