It is possible to successfully run the commands usersInfo and rolesInfo on a secondary without setting slaveOk=true in the command.
That is, the command's corresponding slaveOk() virtual functions are returning true when they should return false. When changing slaveOk() also implement slaveOverrideOk() to return true for these commands so that specifying slaveOk=true in the command will be honored.