It would maybe be safer to just return the stream directly by GetBlobContentsAsync instead of wrapping it in an contract.
Cause we still need to close/dispose the stream somehow and we cant just do it with an using block as the contract is not disposable.
Maybe it would be better not to support mix of contract with the stream.