In a replica set (i.e. a distributed system), things are eventually consistent, except in the primary. The transaction realistically doesn’t get replicated to the secondaries until it’s committed.
I noticed in the documentation that it should be set the ‘primary’ read preference.
This was a deliberate design decision (see SERVER-33580). I’m not privy to all the technical details regarding this decision, but if I have to guess, allowing multi-document transactions on secondaries would be difficult from causality point of view, would be of lower performance, for not much gain in functionality since all writes must go to the primary anyway