I think I understand now, the overflow and underflow events are only sent when the element transitions from one state to another. So changing the overflow style must reset that and allows a new overflow event to be sent...

Its too bad that the timeout is required.  Do you see any visible overflow when rotating the phone with the code this way? If not, maybe it is okay as it is.

Otherwise, here's another approach you could try: 

- register both overflow and underflow handlers
- when you get an overflow event, remove 3 characters and use setTimout to schedule another call to the handler
- if you get an underflow event, cancel the timeout

I'm assuming here that the underflow event would be delivered before any more setTimeout triggered the removal of more characters than are necessary.

But again, if there is no visible jank doing it this way, then its okay with me.