public async Task ContinuousChanges() { using (var client = new CouchClient("http://localhost:5984")) { IEnumerable <string> dbs = await client.GetDatabasesNamesAsync().ConfigureAwait(false); CouchDatabase <Rebel> rebels = client.GetDatabase <Rebel>(); if (dbs.Contains(rebels.Database)) { await client.DeleteDatabaseAsync <Rebel>().ConfigureAwait(false); } rebels = await client.CreateDatabaseAsync <Rebel>().ConfigureAwait(false); Rebel luke = await rebels.CreateAsync(new Rebel { Name = "Luke", Age = 19 }).ConfigureAwait(false); Assert.Equal("Luke", luke.Name); luke.Surname = "Vader"; _ = Task.Run(async() => { await Task.Delay(2000); await rebels.CreateOrUpdateAsync(luke); }); var ids = new[] { luke.Id }; var option = new ChangesFeedOptions { Since = "now" }; var filter = ChangesFeedFilter.DocumentIds(ids); using var cancelSource = new CancellationTokenSource(); await foreach (var _ in rebels.GetContinuousChangesAsync(option, filter, cancelSource.Token)) { cancelSource.Cancel(); } await client.DeleteDatabaseAsync <Rebel>().ConfigureAwait(false); } }