public static void AddServerStreamingMethod <T>(ServerServiceDefinitionBuilder builder, Method <Void, T> method, Forwarder <T> forwarder) where T : class { builder.AddMethod(method, async(Void _, IServerStreamWriter <T> responseStream, ServerCallContext context) => { await forwarder.Subscribe(async reader => { while (context.CancellationToken.IsCancellationRequested == false) { var success = false; try { var x = await reader.ReadAsync(); await responseStream.WriteAsync(x); success = true; } catch (OperationCanceledException) { } if (success == false) { break; } } }); }); }