Where does it make the most sense to debounce events? Consider the resize event of an internet browser. The browser can fire a myriad of resize events as a user clicks and drags to resize a browser window. However, usually, you end up debouncing handling the resize event listener callback because you usually only care about the start or end of a resize action.
If I had some functionality that would fire events in a similar, burst manner, would it make sense to debounce firing my event from my emitter or does it make more sense to send out all the events, no matter how many, and let the consumers themselves deal with debouncing?
I would consider the benefit of debouncing from the source to be that you don't have to have multiple debouncers littering your code everywhere that you consume your own events so less code duplication. However, I see the benefit of debouncing at the listener level to be that you get a much higher resolution of source events in case you need that and you get more control over tweaking the delay in the debounce per listener.