public override async Task<AsyncDisposableValue<Stream>> OpenWriteAsync(CancellationToken cancellationToken = new CancellationToken())
        {
            var stream = new ArrayPoolMemoryStream(InitialCapacity, ArrayPool ?? ArrayPool<byte>.Shared);

            return new AsyncDisposableValue<Stream>(stream, async () =>
            {
                stream.Seek(0, SeekOrigin.Begin);
                await BlockBlob.UploadFromStreamAsync(stream, cancellationToken);
            });
        }
        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 = new ArrayPoolMemoryStream(InitialCapacity, ArrayPool ?? ArrayPool<byte>.Shared);

            await BlockBlob.DownloadToStreamAsync(stream, cancellationToken);

            cancellationToken.ThrowIfCancellationRequested();

            stream.Seek(0, SeekOrigin.Begin);

            return new AsyncDisposableValue<Stream>(stream, async () => stream.Dispose());
        }