1. We kill operations as part of the beginning of stepdown. Calling AutoGetRstlForStepUpStepDown starts the killOp thread
2. We start to kill user operations before we disabling writes on primary and before transitioning the server to SECONDARY (these are the things that update the server description and trigger a topologyVersion bump)
3. The killed operation error response is appended with a topologyVersion that hasn't been incremented yet.
Since the topologyVersion is not incremented, the driver will try to reselect the same server to run the command even though it may still be in the process of stepping down.
We can consider adding an extra incrementation to the topologyVersion before scheduling the killOps (we already increment the topologyVersion twice as part of stepdown – once for when we disable writes, and another when we complete the transition to secondary). Another alternative is to delaying the killOps logic until the topologyVersion is properly incremented.