However, if I transmit
9 characters from the device, these characters are displayed, appended by a
'\0' character (or whichever character I choose as default in read<char>()).

io.run() seems to return immediately, not even waiting for any characters to
be transmitted.
 
Could you clarify the above 2 sentences? If these characters are displayed, they have been received, right?