public override async Task <FeedResponse <CosmosElement> > DrainAsync(int maxElements, CancellationToken token) { FeedResponse <CosmosElement> sourcePage = await base.DrainAsync(maxElements, token); // skip the documents but keep all the other headers List <CosmosElement> documentsAfterSkip = sourcePage.Skip(this.skipCount).ToList(); FeedResponse <CosmosElement> offsetPage = new FeedResponse <CosmosElement>( documentsAfterSkip, documentsAfterSkip.Count(), sourcePage.Headers, sourcePage.UseETagAsContinuation, sourcePage.QueryMetrics, sourcePage.RequestStatistics, sourcePage.DisallowContinuationTokenMessage, sourcePage.ResponseLengthBytes); int numberOfDocumentsSkipped = sourcePage.Count - documentsAfterSkip.Count; this.skipCount -= numberOfDocumentsSkipped; if (sourcePage.DisallowContinuationTokenMessage == null) { if (!this.IsDone) { string sourceContinuation = sourcePage.ResponseContinuation; offsetPage.ResponseContinuation = new OffsetContinuationToken( this.skipCount, sourceContinuation).ToString(); } else { offsetPage.ResponseContinuation = null; } } return(offsetPage); }