We want to restrict transactions to only run on primaries. The way
SERVER-33580 accomplished that was by restricting them to only work if the readPreference provided was 'primary'. Drivers, however, may send 'primaryPreferred' when connected to a primary via a direct connection.
We should undo the server changes from
SERVER-33580, and instead change the checkCanServeReadsFor method in ReplicationCoordinator to return false if the node is not currently primary and we're in a transaction.