You can do this without leasing using optimistic concurrency. Basically set an access condition that says that this blob will be different from all etags blobs with that name. If in fact there is a blob with some stage, the second download will fail.
var access = AccessCondition.GenerateIfNoneMatchCondition("*"); await blobRef.UploadFromStreamAsync(stream, access, null, null);
source share