public override async ValueTask <T> ReadAsync(CancellationToken token) { await reader.WaitToReadAsync(token).ConfigureAwait(false); //lock and deserialize T result; using (await readLock.Acquire(token).ConfigureAwait(false)) { var lookup = Partition; //reset file cache await lookup.FlushAsync(token).ConfigureAwait(false); result = await reader.DeserializeAsync(lookup, token).ConfigureAwait(false); cursor.Advance(lookup.Position); } return(result); }