@codewiz In wezterm, there is a separate pty reading thread that parses the incoming data before handing it to the model. That delay catches fragmented writes to reduce flicker and tearing when an application repaints the whole screen but uses small writes to do so.
After each read, unless we are over mux_output_parser_buffer_size (128k by default) we wait that 3ms to see if more data is following to batch it together.
Using https://gitlab.com/gnachman/iterm2/-/wikis/synchronized-updates-spec skips this logic.