public ProxySessionManager(IMessageReader reader)
{
Guard.NotNull(reader, "reader");
_messageReader = reader;
_cancellationToken = _cancellationTokenSource.Token;
_readMessagesTask = new Task(ReadMessagesTask, _cancellationToken);
_readMessagesTask.ContinueFaultWith(_ => Dispose());
_readMessagesTask.Start();
_mainTask = new Task(MainTask, _cancellationToken);
_mainTask.ContinueFaultWith(_ => Dispose());
_mainTask.Start();
}