public async Task <ListStreamsPage> ListStreams( Pattern pattern, int maxCount = 100, string continuationToken = default, CancellationToken cancellationToken = default) { Ensure.That(maxCount).IsGt(0); Task <ListStreamsPage> ListNext(string @continue, CancellationToken ct) => ListStreams(pattern, maxCount, @continue, ct); var client = CreateClient(); client = await client.RootAsync( continuationToken == default ?LinkFormatter.ListStreams(pattern, maxCount) : LinkFormatter.ListStreams(pattern, maxCount, continuationToken), cancellationToken); var resource = client.Current.First(); var streamIds = from e in resource.Embedded where e.Rel == Constants.Relations.Feed from link in e.Links where link.Rel == Constants.Relations.Feed select link.Title; var listStreams = resource.Data <HalListStreams>(); return(new ListStreamsPage(listStreams.ContinuationToken, streamIds.ToArray(), ListNext)); }