public async Task <OneOf <Success, Exception> > WriteAsync(StorageFile file, CancellationToken cancellationToken = default) { byte[] data; if (file.Stream is MemoryStream memory) { data = memory.ToArray(); } else { data = await file.Stream.ToArrayAsync(cancellationToken); file.Stream.Dispose(); file.Stream = _memory.GetStream(data); } var result = await _impl.WriteAsync(file, cancellationToken); if (result.IsT0) { var cache = new Cache { Data = data, MediaType = file.MediaType }; await _redis.SetObjectAsync(_options.Prefix + file.Name, cache, _options.Expiry, cancellationToken : CancellationToken.None); // don't cancel } return(result); }