A possible solution to this would be implementing Chris' previous comment to only re-set the read preference if it is not already ``MongoClient::RP_PRIMARY``.  This means it will only ever preserve the original read preference in ``$this->originalReadPreference``.

An alternative would be to store every change to the read preference in an array, and pop each one off for every call to ``resetOriginalReadPreference()``, but I'm not sure the additional overhead of maintaining an array would be worth it unless we have a specific scenario where this occurs.