I'd expect the ^C to immediately kill the connection. It sends a SIGHUP, which indicates the serial line has been disconnected. (Based on the DCD line, per Wikipedia.)
I'd think the ^C would be transmitted by a physical disconnect, i.e. changing the state of the DCD line. The DCD disconnect should immediately trigger an interrupt, which should trigger a SIGHUP.
To be fair, though, I can't say I've used a proper serial terminal.
Btw, nice work on sway.