private static async Task DoStreamAsync(TestService.TestServiceClient client)
        {
            var options = new CallOptions()
                          .WithDeadline(DateTime.UtcNow.AddSeconds(5));

            var call = client.GetMessages(new MessageRequest(), options);

            try
            {
                while (await call.ResponseStream.MoveNext())
                {
                    var message = call.ResponseStream.Current;

                    // simulate work delay
                    await Task.Delay(1000);

                    Console.WriteLine($"Message: {message.MessageNumber}");
                }

                var status = call.GetStatus();
                Console.WriteLine(status.ToString());
                Console.WriteLine("Completed streaming");
            }
            catch (RpcException e)
            {
                Console.WriteLine(e.Status);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            finally
            {
                call.Dispose();
            }
        }