diff --git a/Library/Homebrew/cask/lib/hbc/auditor.rb b/Library/Homebrew/cask/lib/hbc/auditor.rb
index ee1b50938b75bb3a8a76fabac1d065ed2cc2b64b..d6846080bd63d1fb0ec8329dbae4cc8d1857db1c 100644
--- a/Library/Homebrew/cask/lib/hbc/auditor.rb
+++ b/Library/Homebrew/cask/lib/hbc/auditor.rb
@@ -1,20 +1,22 @@
 module Hbc
   class Auditor
     def self.audit(cask, audit_download: false, check_token_conflicts: false)
-      saved_languages = MacOS.instance_variable_get(:@languages)
-
       if languages_blocks = cask.instance_variable_get(:@dsl).instance_variable_get(:@language_blocks)
-        languages_blocks.keys.each do |languages|
-          ohai "Auditing language: #{languages.map { |lang| "'#{lang}'" }.join(", ")}"
-          MacOS.instance_variable_set(:@languages, languages)
-          audit_cask_instance(Hbc.load(cask.sourcefile_path), audit_download, check_token_conflicts)
-          CLI::Cleanup.run(cask.token) if audit_download
+        begin
+          saved_languages = MacOS.instance_variable_get(:@languages)
+
+          languages_blocks.keys.map { |languages|
+            ohai "Auditing language: #{languages.map { |lang| "'#{lang}'" }.join(", ")}"
+            MacOS.instance_variable_set(:@languages, languages)
+            CLI::Cleanup.run(cask.token) if audit_download
+            audit_cask_instance(Hbc.load(cask.sourcefile_path), audit_download, check_token_conflicts)
+          }.all?
+        ensure
+          MacOS.instance_variable_set(:@languages, saved_languages)
         end
       else
         audit_cask_instance(cask, audit_download, check_token_conflicts)
       end
-    ensure
-      MacOS.instance_variable_set(:@languages, saved_languages)
     end
 
     def self.audit_cask_instance(cask, audit_download, check_token_conflicts)