public Task StartFlowAsync() { var sourceCancellationUnit = new JobCancellationUnit(); // tap - start scrolling - out = es docs var sourceStream = _tap.StartFlowingToEnd(sourceCancellationUnit); // batcher/transformer - start batching - in = es docs, out = es doc batches var batchStream = _transformer.StartTransforming(sourceCancellationUnit, sourceStream); // TODO: throttler // sink - start indexing - in = es doc batches var destinationCancellationUnit = new JobCancellationUnit(); return(_sink.StartDrainingAsync(destinationCancellationUnit, batchStream)); }