This policy would create problems for a thread that processed only a single input message and then put itself to sleep. If it received more than one message it would process only the first one, unless some other event occurred later to wake it up. Even if it eventually processed all the messages, the timing would likely be off.
In order to avoid this problem, the thread would have to either loop through all its input messages or be more careful about when to go to sleep. Either approach would create annoying complications.
As a result the thread's logic can be simpler. It can process one message at a time and let the scheduler take care of the looping.
However, it is possible that some existing code relies on the ability to put a thread to sleep even when tbere are still messages in its input queue. Such an application will break if you upgrade to version 2.3 or above.
I regard this danger as unlikely. On request, however, I can make the new behavior subject to a compile-time macro, so that you can restore the new behavior if you need it.