public async Task ServeStreamAsync(Stream stream) { BasicMessageStream basicMessageStream = new BasicMessageStream(stream); basicMessageStream.StartListeningAsync(); while (!cancellation.IsCancellationRequested) { try { Message message = await basicMessageStream.GetMessageAsync(cancellation.Token); message.UpdateServer(knowledge); } catch (OperationCanceledException) { basicMessageStream.Stop(); break; } } knowledge.ClientDisconnected(basicMessageStream); }