You are assuming that your code gets called at least once per millisecond.
No, there is no requirement to call that frequently.
Consider the math. Say for example that millis() is getting close to wrapping and has a value of 4294967000. (4294967295 is largest number before it wraps)
My code calculates timer_cmp to be
timer_cmp = millis() + rate;
so, with a rate of 500 ms this becomes
timer_cmp = 4294967000 + 500;
which results in timer_cmp wraping
timer_cmp = 295;
so when millis() wraps some 205ms later it will become = 0, and then 295ms later timer_cmp matches (500ms later)
So the real issue here (which I don't really consider an issue) is that once every 49.7 days (assuming the system has been running this long) the LED would flash rapidly (more likely appear to remain lit) for a period of between 1 to 499ms and then resume normal flashing. In this example the duration would be 205ms.
This issue occurs because of the statement "if (millis() >= timer_cmp)" which becomes true as soon as timer_cmp wraps.
The wrap condition can be handled as a special case but the complexity involved isn't warranted considering the benign result. The probability of this race condition even occurring at all is actually much less than once every 49.7 days since it would only occur if the LED was in the flashing condition during this (500ms every 49.7 day) window.