private async Task <Position> ReadEventsInternalAsync(IEventStoreConnection connection, bool resolveLinkTos, UserCredentials userCredentials, long?lastCommitPosition) { _checkpointIntervalCurrent = 0; bool shouldStopOrDone; AllEventsSlice slice; do { slice = await connection .FilteredReadAllEventsForwardAsync(_nextReadPosition, ReadBatchSize, resolveLinkTos, _filter, _maxSearchWindow, userCredentials) .ConfigureAwait(false); shouldStopOrDone = await ReadEventsCallbackAsync(slice, lastCommitPosition).ConfigureAwait(false); } while (!shouldStopOrDone); return(slice.NextPosition); }