public override async Task <AsyncDisposableValue <Stream> > OpenReadAsync(CancellationToken cancellationToken = new CancellationToken()) { if (!await BlockBlob.ExistsAsync(cancellationToken)) { throw new ResourceNotFoundException("Metadata not found for this store"); } cancellationToken.ThrowIfCancellationRequested(); var stream = await BlockBlob.OpenReadAsync(cancellationToken); return(new AsyncDisposableValue <Stream>(stream, async() => stream.Dispose())); }