guably subtle &ndash; questions are raised about how it all works together. The central question is, perhaps, if I ask to send N bytes and handle S, non-blockingly, what are the various possibilities for sending less than N bytes of the blob and whether S is also sent? Conversely, how will receiving on the other side work? The following describes those semantics and <em>mandates</em> how to properly handle it. Not following these formally leads to undefined behavior. (Informally, for the tested OS versions,