Okay, how long is the debounce window? Where in the input pipeline do you debounce (obviously not immediately on keystrokes)? Will debounce work for long-running requests, which are event-driven and not time-driven?

I have seen, far too many times, naive approaches like wrapping all click handlers in a "debounce" function cause additional issues and not actually solve the underlying problem.

To clarify - I am not stating that simple debouncing is the solution to all the issues you're identifying. I agree with you that handling some of them can be very complex. I just shared the article as a pointer to a broadly similar concept that can be used to help communicate the gist of what you're talking about.