I think this copy needs to get made, then startingLeaderCounter needs to be checked again, then the runnable should run. Otherwise this will be a copy of a bad state.

So maybe the runnables need to get split into a prepare() and run()?