SciKit-Learn's K-Means doesn't discard empty clusters (code of particular function here). Instead, it looks for the pattern that is furthest away from its assigned centroid (assigned cluster but I want to keep it simple) and the centroid of the empty cluster becomes this pattern. It then updates the number of patterns that are attributed to this new centroid. And it does this for every empty cluster, naturally picking the pattern with the 2nd furthest distance and so on. The old labels or number of patterns attributed to the originally non-empty clusters is never changed.
I want to know what this implementation was based on, e.g. paper, book, etc. Something with some kind of formalism and justification of why this works and if it has consequences that I should be aware of.