Move existsSync into try/catch, to fix flake

Fixes https://github.com/dart-lang/sdk/issues/48271

Change-Id: Ie1eb59f0f5ba873822d9c277f00482a7d4cf74cc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/243160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/dartdev/test/utils.dart b/pkg/dartdev/test/utils.dart
index e77686f..f159c9b 100644
--- a/pkg/dartdev/test/utils.dart
+++ b/pkg/dartdev/test/utils.dart
@@ -109,11 +109,15 @@
     await _process?.exitCode;
     _process = null;
     int deleteAttempts = 5;
-    while (dir.existsSync()) {
+    while (deleteAttempts >= 0) {
+      deleteAttempts--;
       try {
+        if (!dir.existsSync()) {
+          return;
+        }
         dir.deleteSync(recursive: true);
       } catch (e) {
-        if ((--deleteAttempts) <= 0) {
+        if (deleteAttempts <= 0) {
           rethrow;
         }
         await Future.delayed(Duration(milliseconds: 500));