public async Task Start() { if (_token.IsCancellationRequested) { return; } RegisterChild(_dispatcher); var count = _buffer.BufferedCount; // _log.Debug($"{count} streams in buffer", this); if (count > 0) { var obs = _buffer.OutputBlock.AsObservable() .Take(count).Select(async s => { await _dispatcher.SendAsync(s); if (!_token.IsCancellationRequested) { return(await s.Task); } return(false); }); await obs.LastOrDefaultAsync(); } _buffer.LinkTo(_dispatcher, s => !_token.IsCancellationRequested); _buffer.LinkLeftToNull(); }