Now it's time to implement the other half -- sending messages.
As a rule of thumb, only a single task should write to each TcpStream.
This way, we also have compartmentalised that activity and automatically serialize all outgoing messages.
So let's create a connection_writer_loop task which receives messages over a channel and writes them to the socket.
If Alice and Charley send two messages to Bob at the same time, Bob will see the messages in the same order as they arrive in the channel.