There's the additional oddity that TTYs are, abstractly, a non-local communications channel with limited bandwidth and non-zero latency. The other end of a serial connection could send data and signal it was done, and that signal could actually arrive while the data was propagating down the copper (or the RS232 interrupt could have lower priority). The two ends of a real TTY are different observers and can disagree on the ordering of events. PTYs pretend that there's magical ideal hardware connecting the two ends. Emacs makes the assumption that this ideal hardware is perfectly fast, such that no other signals can arrive while the data is on the wire. The new TTY code allows other stuff to be faster than the receiving side virtual serial port decoding. In particular, SIGCHLD can arrive while there's data that has been buffered for decoding but not yet decoded, because the sending side doesn't wait and the receiving side has a step before the data registers as available. If this were a pipe or a socket, it would be there already, but a real TTY wouldn't be so certain, and a PTY is underspecified between these models.