This fixes an occasional issue with plugins, where batched events (eg. keypresses coming from a single paste command) would arrive in the plugin out of order.
This is fixed here by synchronizing these batches (sending them to the plugin(s) through a single async task rather than one task per event).
This can theoretically be optimized by paralleling the handling on a client level (i.e. that the same event would be sent to all clients in parallel, moving on to the next event once all clients handled it), but I think it's best to only consider this optimization if it becomes an issue (as is it's pretty fast and a rare occurrence).
This fixes an occasional issue with plugins, where batched events (eg. keypresses coming from a single paste command) would arrive in the plugin out of order.
This is fixed here by synchronizing these batches (sending them to the plugin(s) through a single async task rather than one task per event).
This can theoretically be optimized by paralleling the handling on a client level (i.e. that the same event would be sent to all clients in parallel, moving on to the next event once all clients handled it), but I think it's best to only consider this optimization if it becomes an issue (as is it's pretty fast and a rare occurrence).