diff --git a/fetch.bat b/fetch.bat
index 26d8bc130..eef301915 100755
--- a/fetch.bat
+++ b/fetch.bat
@@ -7,8 +7,8 @@ setlocal
 :: Synchronize the root directory before deferring control back to gclient.py.
 call "%~dp0\update_depot_tools.bat"
 :: Abort the script if we failed to update depot_tools.
-IF %ERRORLEVEL% NEQ 0 (
-  exit /b %ERRORLEVEL%
+IF %errorlevel% NEQ 0 (
+  goto :EOF
 )
 
 :: Ensure that "depot_tools" is somewhere in PATH so this tool can be used
diff --git a/gclient.bat b/gclient.bat
index 5a6ca1938..2934a6ce1 100755
--- a/gclient.bat
+++ b/gclient.bat
@@ -10,8 +10,8 @@ IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :CALL_GCLIENT
 :: Synchronize the root directory before deferring control back to gclient.py.
 call "%~dp0update_depot_tools.bat" %*
 :: Abort the script if we failed to update depot_tools.
-IF %ERRORLEVEL% NEQ 0 (
-  exit /b %ERRORLEVEL%
+IF %errorlevel% NEQ 0 (
+  goto :EOF
 )
 
 :CALL_GCLIENT
diff --git a/gsutil.py.bat b/gsutil.py.bat
index ab9719087..5f367cb2a 100755
--- a/gsutil.py.bat
+++ b/gsutil.py.bat
@@ -10,8 +10,8 @@ IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :CALL_GSUTIL
 :: Synchronize the root directory before deferring control back to gsutil.py.
 call "%~dp0update_depot_tools.bat" %*
 :: Abort the script if we failed to update depot_tools.
-IF %ERRORLEVEL% NEQ 0 (
-  exit /b %ERRORLEVEL%
+IF %errorlevel% NEQ 0 (
+  goto :EOF
 )
 
 :CALL_GSUTIL
diff --git a/update_depot_tools b/update_depot_tools
index b748ed0ff..ce95e8857 100755
--- a/update_depot_tools
+++ b/update_depot_tools
@@ -129,11 +129,7 @@ if [ "X$DEPOT_TOOLS_UPDATE" != "X0" ]; then
   if [ -e "$base_dir/.git" ]; then
     cd "$base_dir"
     update_git_repo
-    UPDATE_RESULT=$?
     cd - > /dev/null
-    if [[ $UPDATE_RESULT -ne 0 ]]; then
-      exit $UPDATE_RESULT
-    fi
   fi
 
   # Sync CIPD-boostrapped packages.
diff --git a/update_depot_tools.bat b/update_depot_tools.bat
index 563f13151..4381a6806 100644
--- a/update_depot_tools.bat
+++ b/update_depot_tools.bat
@@ -5,24 +5,17 @@
 
 :: This batch file will try to sync the root directory.
 
-setlocal enabledelayedexpansion
+setlocal
 
 :: Windows freaks out if a file is overwritten while it's being executed.  Copy
 :: this script off to a temporary location and reinvoke from there before
 :: running any git commands.
 IF "%~nx0"=="update_depot_tools.bat" (
   COPY /Y "%~dp0update_depot_tools.bat" "%TEMP%\update_depot_tools_tmp.bat" >nul
-  if errorlevel 1 (
-    echo Error updating depot_tools, can't copy update_depot_tools.bat to TEMP.
-    :: !VAR! syntax is used to get delayed expansion, because %VAR% syntax would
-    :: return a value that was set prior entering the IF () block.
-    exit /b !ERRORLEVEL!
-  )
+  if errorlevel 1 goto :EOF
   :: Use call/exit to avoid leaving an orphaned window title.
   call "%TEMP%\update_depot_tools_tmp.bat" "%~dp0" %*
-  :: !VAR! syntax is used to get delayed expansion, because %VAR% syntax would
-  :: return a value that was set prior entering the IF () block.
-  exit /b !ERRORLEVEL!
+  exit /b %ERRORLEVEL%
 )
 
 set DEPOT_TOOLS_DIR=%~1
@@ -32,16 +25,15 @@ SHIFT
 IF EXIST "%DEPOT_TOOLS_DIR%.disable_auto_update" GOTO :EOF
 IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :EOF
 
-echo Updating depot_tools...
 set GIT_URL=https://chromium.googlesource.com/chromium/tools/depot_tools.git
 
 :: Download git for the first time if it's not present.
 call git --version > nul 2>&1
-if %ERRORLEVEL% == 0 goto :GIT_UPDATE
+if %errorlevel% == 0 goto :GIT_UPDATE
 call "%DEPOT_TOOLS_DIR%bootstrap\win_tools.bat"
 if errorlevel 1 (
   echo Error updating depot_tools, no revision tool found.
-  exit /b %ERRORLEVEL%
+  goto :EOF
 )
 
 :GIT_UPDATE
@@ -68,7 +60,7 @@ call git fetch -q origin > NUL
 call git checkout -q origin/main > NUL
 if errorlevel 1 (
   echo Failed to update depot_tools.
-  exit /b %ERRORLEVEL%
+  goto :EOF
 )
 
 :: Sync CIPD and CIPD client tools.