Depth Search ChatGPT found the reason... a extract...
Possible "timeout" or premature jump: Some versions of Marlin had a safety condition where, if the temperature didn’t drop fast enough, the M190 R command could abort the wait to avoid an infinite loop. By default, Marlin defines parameters like MIN_COOLING_SLOPE_DEG_BED (e.g., 1.5 °C) and MIN_COOLING_SLOPE_TIME_BED (e.g., 60 s) as cooling criteria. For example, if the bed doesn’t cool by at least 1-2 degrees in 60 seconds, it assumes it won’t cool further (perhaps due to a hot room) and proceeds with the G-code (reddit.com). In some cases, this caused the printer to not wait for the desired temperature and move on prematurely. A user identified this as a firmware bug and suggested recompiling Marlin, increasing the time limit from 60 s to 600 s (10 min) or more (reddit.com). This gives a larger margin before canceling the wait. The ideal solution is to adjust these parameters in the firmware if you can compile it. If not, the alternative is to “trick” the system: for example, as shown, add manual pauses (G4 S...) to ensure cooling, or use multiple staggered M190 R steps (R60, then R50, etc., with pauses) instead of a single one. Keep this behavior in mind if you notice your printer isn’t waiting fully.
https://www.reddit.com/r/3Dprinting/comments/qpegki/gcode_m190_r25_not_working_does_it_timeout_or/</div><br/><br/>