But a label is a place where the process is allowed to get preempted.
And yeah sending 2 messages isn't atomic IRL so it makes sense to have a label between them.
So what's the first thing TLC does when I do that?
It fills up the recv queue so that the server is blocked
then it fills up the send queue except for one free spot
then it sends the message that requires a ping after it
then the client is stuck at the new label, unable to send bc sendq is full, unable to recv because wrong label