Actually: the reason for the desire to do this is that with the current actor message-based protocol (and the lack of buffering) it is a simplification for all direct users of the TcpConnection actors, since they can just send one message which is guaranteed not to be NACKed—at least not for flow control reasons.

Stepping back a bit: with a stream interface to be used for Tcp this will completely go away. You just create a Source with your different parts of data—which will be the very same thing as CompoundBytes—and connect it to the Sink which is the TcpConnection’s write side. Done. No need for this change at all. Sorry for noticing this so late in the process :-(