public void Write( byte[] payload, string channelName )
		{
			var frame = new TcpMultiplexerFrame {
				Preamble = _preamble,
				ChannelNameLength = (byte)channelName.Length,
				ChannelName = channelName,
				PayloadLength = payload.Length,
				Payload = payload,
			};

			var buffer = frame.ToBytes ();
			_stream.Write (buffer, 0, buffer.Length);
			_stream.Flush ();
			_logger.Debug ("TcpMultiplexerWriter {0}", frame);
		}
		public Task WriteAsync( byte[] payload, string channelName )
		{
			var frame = new TcpMultiplexerFrame {
				Preamble = _preamble,
				ChannelNameLength = (byte)channelName.Length,
				ChannelName = channelName,
				PayloadLength = payload.Length,
				Payload = payload,
			};

			var buffer = frame.ToBytes ();
			return _stream.WriteAsync (buffer, 0, buffer.Length).ContinueWith( t => 
				{
					_stream.FlushAsync();
					_logger.Debug ("TcpMultiplexerWriter {0}", frame);
				});
		}