WebKit export of https://bugs.webkit.org/show_bug.cgi?id=233944 (#32029)

diff --git a/css/css-cascade/layer-statement-before-import.html b/css/css-cascade/layer-statement-before-import.html
index 5c3abe5..7d09936 100644
--- a/css/css-cascade/layer-statement-before-import.html
+++ b/css/css-cascade/layer-statement-before-import.html
@@ -159,26 +159,32 @@
 const reference = document.getElementById('reference');
 
 for (let testCase of testCases) {
-  let styleElement;
-  let sheet;
-  if (!testCase.constructedStyleSheet) {
-    styleElement = document.createElement('style');
-    styleElement.textContent = testCase.style;
-    document.head.append(styleElement);
-    sheet = styleElement.sheet;
-  } else {
-    sheet = new CSSStyleSheet();
-    sheet.replaceSync(testCase.style);
-    document.adoptedStyleSheets = [sheet];
-  }
+  promise_test(async t => {
+    let styleElement;
+    let sheet;
+    if (!testCase.constructedStyleSheet) {
+      styleElement = document.createElement('style');
+      styleElement.textContent = testCase.style;
+      await new Promise(resolve => {
+        styleElement.onload = resolve;
+        styleElement.onerror = resolve;
+        document.head.append(styleElement);
+      });
+      sheet = styleElement.sheet;
+    } else {
+      sheet = new CSSStyleSheet();
+      sheet.replaceSync(testCase.style);
+      document.adoptedStyleSheets = [sheet];
+    }
 
-  test(() => {
-    testCase.operations(sheet);
-    assert_equals(getComputedStyle(target).color, getComputedStyle(reference).color);
-  },testCase.title);
-
-  if (styleElement)
-    styleElement.remove();
-  document.adoptedStyleSheets = [];
+    try {
+      testCase.operations(sheet);
+      assert_equals(getComputedStyle(target).color, getComputedStyle(reference).color);
+    } finally {
+      if (styleElement)
+        styleElement.remove();
+      document.adoptedStyleSheets = [];
+    }
+  }, testCase.title);
 }
 </script>