public async Task RemoveAsync() { var log = await _dailyRepository.AddAsync(LogEventGenerator.Default); Assert.NotNull(log?.Id); var disposables = new List <IDisposable>(2); var countdownEvent = new AsyncCountdownEvent(2); try { disposables.Add(_dailyRepository.DocumentsRemoving.AddSyncHandler((o, args) => { Assert.Equal(log, args.Documents.First()); countdownEvent.Signal(); })); disposables.Add(_dailyRepository.DocumentsRemoved.AddSyncHandler((o, args) => { Assert.Equal(log, args.Documents.First()); countdownEvent.Signal(); })); await _dailyRepository.RemoveAsync(log); await countdownEvent.WaitAsync(new CancellationTokenSource(TimeSpan.FromMilliseconds(250)).Token); Assert.Equal(0, countdownEvent.CurrentCount); } finally { foreach (var disposable in disposables) { disposable.Dispose(); } disposables.Clear(); } }