This construct does survive the millis() rollover...
if ( millis() - lastCheckAtMs > cmTimeoutMs ) { . . .
This does not although it looks OK at first glance and works most of the time . . .
if ( lastCheckAtMs + cmTimeoutMs < millis() ) { . . .
But, anyway, for most practical purposes both are OK.