async void HandleRequest(TcpClient client) { Console.WriteLine("Got connection!"); try { var stream = client.GetStream(); await SendFilters(stream); Console.WriteLine("Sent filters!"); string name = await ReceiveFilterName(stream); Console.WriteLine($"Received filter name: {name.Trim()}"); var kernel = Filters[name]; int size = await ReceiveSize(stream); Console.WriteLine($"Received image size: {size.ReadableSize()}"); var image = await ReceiveImage(stream, size); Console.WriteLine("Received image!"); var continuation = LightSwitch.Listening(stream); var result = image.WithKernelApplied(kernel, OnProgressChanged(stream), continuation); Console.WriteLine("Calculated result!"); if (result is Just <BasicImage> just) { await SendImage(stream, just.Value, size); Console.WriteLine("Sent result!"); } else { Console.WriteLine("Result is Nothing!"); } } catch (Exception e) { Console.WriteLine($"Got error while handling request: '{e}'"); } Console.WriteLine("Done!"); }