Currently, persistParticipantsList never converts the exception thrown, "ErrorCodes::TransactionCoordinatorReachedAbortDecision", when the two phase commit deadline exceeds the time limit, causing the invariant to be hit.
Instead, if the transaction times out while the persisting the participants, persistParticipantsList should convert the exception to be NoSuchTransaction - similar to what sendPrepareToShard does.