This ticket is an umbrella for bugs in our transactions implementation that were found when writing a spec test runner as part of GODRIVER-251:
- abortTransaction should ignore all server errors. Relevant section of the spec: "After the retryable write attempt, drivers MUST ignore all errors from the abortTransaction command"
- In Operation.Execute, we use the operation's read preference for server selection but use the transaction's read preference when creating the wire message. This can cause a mismatch. For example, if a collection with read preference secondary is used to run a transaction with read preference primary, a secondary will be selected but $readPreference will be primary in the wire message, causing a NotMaster error. We should use the transaction's read pref for everything.