Everything happens in the branch and bound tree. Instead of discarding feasible solutions that have worse value than your best one you keep them in a pool.
The author is losing solutions because cplex does smart branching. He can change the branching option to strong branching and he will get the missing solutions. Or he can implement a custom branching callback to ensure that all nodes are visited, even non promising ones.