Election cancelation calls VoterRequester::cancel() to stop the running election. However, when the node has finished election dry run and is writing the last vote, calling cancel() on the dry run VoterRequester won't stop the real election since real election resets the VoterRequester.
We could have the real run to check the result of the previous VoteRequester, but election handoff skips the dry run, so canceling the election will invariant as in
SERVER-46850. Using VoteRequester to store the cancelled state as in SERVER-48207 isn't reliable in that case. We need to represent the canceled state at a higher level.