If someone sends a Write(ByteString.empty, myAck), then it will be not Write.Empty (because of the non-null ack field). Maybe we should add protection against this?