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);
        }