public static Task SetPermissionsAsync(this CloudBlobContainer container, BlobContainerPermissions permissions) {
			return Task.Factory.FromAsync(
				(cb, state) => container.BeginSetPermissions(permissions, cb, state),
				ar => container.EndSetPermissions(ar),
				null);
		}
        /// <summary>
        ///     Sets permissions for the container asynchronously.
        /// </summary>
        /// <param name="blobContainer">Cloud blob container.</param>
        /// <param name="permissions">The permissions to apply to the container.</param>
        /// <param name="accessCondition">
        ///     An <see cref="T:Microsoft.WindowsAzure.Storage.AccessCondition" /> object that represents the access conditions for the container. If <c>null</c>, no condition is used.
        /// </param>
        /// <param name="cancellationToken">Cancellation token.</param>
        public static Task SetPermissionsAsync(
            this CloudBlobContainer blobContainer,
            BlobContainerPermissions permissions,
            AccessCondition accessCondition = null,
            CancellationToken cancellationToken = default (CancellationToken))
        {
            ICancellableAsyncResult asyncResult = blobContainer.BeginSetPermissions(permissions, accessCondition, null, null, null, null);
            CancellationTokenRegistration registration = cancellationToken.Register(p => asyncResult.Cancel(), null);

            return Task.Factory.FromAsync(
                asyncResult,
                result =>
                    {
                        registration.Dispose();
                        blobContainer.EndSetPermissions(result);
                    });
        }