diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index da3971ea5f448264b4b4b1a325d9946d8272baae..1276735639abeff84fd4a528b890b0152fa58429 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -128,6 +128,8 @@ This tag is for boolean properties associated with the test.
 - **`raw`** - execute the test without any modification (no helpers will be
   available); necessary to test the behavior of directive prologue; implies
   `noStrict`
+- **`async`** - defer interpretation of test results until after the invocation
+  of the global $DONE` function
 
 #### features
 **features**: [list]
@@ -198,7 +200,7 @@ assert.throws(ReferenceError, function() {
 
 ## Writing Asynchronous Tests
 
-An asynchronous test is any test that includes the string `$DONE` anywhere in the test file.  The test runner checks for the presence of this string; if it is found, the runner expects that the `$DONE()` function will be called to signal test completion.
+An asynchronous test is any test that include the `async` frontmatter flag. When executing such tests, the runner expects that the global `$DONE()` function will be called to signal test completion.
 
  * If the argument to `$DONE` is omitted, is `undefined`, or is any other falsy value, the test is considered to have passed.
 
diff --git a/test/built-ins/Promise/S25.4.3.1_A2.3_T1.js b/test/built-ins/Promise/S25.4.3.1_A2.3_T1.js
index 01574d12e0f2f7e766d2ac4c332f281286591f07..22690161bdd95fca6b0c8028afe89c32683691d2 100644
--- a/test/built-ins/Promise/S25.4.3.1_A2.3_T1.js
+++ b/test/built-ins/Promise/S25.4.3.1_A2.3_T1.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.3.1_A2.3_T1
 author: Sam Mikes
 description: Promise.call(resolved Promise) throws TypeError
+flags: [async]
 ---*/
 
 var p = new Promise(function(resolve) { resolve(1); });
diff --git a/test/built-ins/Promise/S25.4.3.1_A2.4_T1.js b/test/built-ins/Promise/S25.4.3.1_A2.4_T1.js
index 79666fdfd52cd6b7f721632a71d2be45cb1f9131..8151f8b66b41a7f1aabd67b926f6c852d01d782a 100644
--- a/test/built-ins/Promise/S25.4.3.1_A2.4_T1.js
+++ b/test/built-ins/Promise/S25.4.3.1_A2.4_T1.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.3.1_A2.4_T1
 author: Sam Mikes
 description: Promise.call(rejected Promise) throws TypeError
+flags: [async]
 ---*/
 
 var p = new Promise(function(resolve, reject) { reject(1) });
diff --git a/test/built-ins/Promise/S25.4.3.1_A4.1_T1.js b/test/built-ins/Promise/S25.4.3.1_A4.1_T1.js
index 577cb3c1fd0eefa41fc3a1a30b75dd3e4329115d..649418b7ed3664f913cf598c969066aec5d8d68c 100644
--- a/test/built-ins/Promise/S25.4.3.1_A4.1_T1.js
+++ b/test/built-ins/Promise/S25.4.3.1_A4.1_T1.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.3.1_A4.1_T1
 author: Sam Mikes
 description: new Promise(function () { throw }) should reject
+flags: [async]
 ---*/
 
 var errorObject = {},
diff --git a/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js b/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js
index 5ad54e7568611823d51453303fa656885d686712..f74ccebdd14248ef813724671eb49737282726a8 100644
--- a/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js
+++ b/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js
@@ -9,7 +9,7 @@ info: >
 es6id: S25.4.3.1_A5.1_T1
 author: Sam Mikes
 description: Promise executor gets default handling for 'this'
-flags: [noStrict]
+flags: [async, noStrict]
 includes: [fnGlobalObject.js]
 ---*/
 
diff --git a/test/built-ins/Promise/S25.4.3.1_A5.1_T2.js b/test/built-ins/Promise/S25.4.3.1_A5.1_T2.js
index a3dde91926711b8dc2ccd7279c832a915563907c..c8458c9be8139cc9e2de78eedb7bd73b5c8e0b67 100644
--- a/test/built-ins/Promise/S25.4.3.1_A5.1_T2.js
+++ b/test/built-ins/Promise/S25.4.3.1_A5.1_T2.js
@@ -9,7 +9,7 @@ info: >
 es6id: S25.4.3.1_A5.1_T2
 author: Sam Mikes
 description: Promise executor gets default handling for 'this'
-flags: [onlyStrict]
+flags: [async, onlyStrict]
 ---*/
 
 var expectedThis = undefined;
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A2.2_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A2.2_T1.js
index 9cd7d17154a920c7feeb57df5482bfa220a61d61..a34fb70f6d5bd7133afeaaf001a8010d68221075 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A2.2_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A2.2_T1.js
@@ -7,6 +7,7 @@ es6id: 25.4.4.1_A2.2_T1
 author: Sam Mikes
 includes: [PromiseHelper.js]
 description: Promise.all([]) returns immediately
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A2.3_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A2.3_T1.js
index fe60c2a75ef673c371562b3f0a687fd65fbfd7d2..1b61ede66d9fadbe55c68883ee238ddd756c39a3 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A2.3_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A2.3_T1.js
@@ -6,6 +6,7 @@ info: Promise.all([]) returns a promise for a new empty array
 es6id: 25.4.4.1_A2.3_T1
 author: Sam Mikes
 description: Promise.all([]) returns a promise for an array
+flags: [async]
 ---*/
 
 var arg = [];
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A2.3_T2.js b/test/built-ins/Promise/all/S25.4.4.1_A2.3_T2.js
index fdfeb567c1623aff5ac5cf9d2608e0a0e60be0d2..77cd2628e01d4188fcd1f52351128ed73bd842dd 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A2.3_T2.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A2.3_T2.js
@@ -6,6 +6,7 @@ info: Promise.all is resolved with a new empty array
 es6id: 25.4.4.1_A2.3_T2
 author: Sam Mikes
 description: Promise.all([]) returns a Promise for an empty array
+flags: [async]
 ---*/
 
 var arg = [];
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A2.3_T3.js b/test/built-ins/Promise/all/S25.4.4.1_A2.3_T3.js
index c936a4d755f75c1510d25c4e929ce33527c86be3..5dc1568eb6a5cd8e51b96fbe04ac4e5c08f37a60 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A2.3_T3.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A2.3_T3.js
@@ -6,6 +6,7 @@ info: Promise.all([]) is resolved with Promise for a new empty array
 es6id: 25.4.4.1_A2.3_T3
 author: Sam Mikes
 description: Promise.all([]) is resolved with a Promise for a new array
+flags: [async]
 ---*/
 
 var arg = [];
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A3.1_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A3.1_T1.js
index 52023add132cb384d8fd60b490fbe398efbe48ed..3022972a312d211fd76466dddf2853c75f645f84 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A3.1_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A3.1_T1.js
@@ -9,6 +9,7 @@ info: >
 es6id: 25.4.4.1_A3.1_T1
 author: Sam Mikes
 description: Promise.all(3) returns Promise rejected with TypeError
+flags: [async]
 ---*/
 
 var nonIterable = 3;
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A3.1_T2.js b/test/built-ins/Promise/all/S25.4.4.1_A3.1_T2.js
index e046428242e449e312a2c2e48cfa5f8c3ebfb809..b17b4226974c7422c7609ac5694ce2b4d5a44c04 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A3.1_T2.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A3.1_T2.js
@@ -10,6 +10,7 @@ info: >
 es6id: S25.4.4.1_A3.1_T2
 author: Sam Mikes
 description: Promise.all(new Error()) returns Promise rejected with TypeError
+flags: [async]
 ---*/
 
 Promise.all(new Error("abrupt")).then(function () {
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A3.1_T3.js b/test/built-ins/Promise/all/S25.4.4.1_A3.1_T3.js
index 568d5d17088b455c6ad4c78ee0da83208e00a04a..73b5230b43c71cc1fe00bef5635d566d4cbf4a2a 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A3.1_T3.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A3.1_T3.js
@@ -9,6 +9,7 @@ es6id: S25.4.4.1_A3.1_T3
 author: Sam Mikes
 description: Promise.all((throw on GetIterator)) returns Promise rejected with TypeError
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterThrows = {};
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A5.1_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A5.1_T1.js
index 31acd2a6a3077b16fd9d3b64c118c8f19e603c94..1720f8ede76b189af18c2f0f1f6b70d23cd2be0a 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A5.1_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A5.1_T1.js
@@ -9,6 +9,7 @@ es6id: S25.4.4.1_A5.1_T1
 author: Sam Mikes
 description: iterator.next throws, causing Promise.all to reject
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterThrows = {};
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A6.1_T2.js b/test/built-ins/Promise/all/S25.4.4.1_A6.1_T2.js
index ef9f9dbe9c8bd7bf19444e2678022a940b420b9b..3671b7bb15eb73af70747c7db1de61822be8c27e 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A6.1_T2.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A6.1_T2.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.4.1_A6.1_T2
 author: Sam Mikes
 description: Promise.all([]) returns a promise for an empty array
+flags: [async]
 ---*/
 
 var p = Promise.all([]);
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A7.1_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A7.1_T1.js
index cc1152b0e58b826cfa526b2767ef5d30615f2f5b..4b0636e0c36df9fa1c2c597d99fe2991825d4985 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A7.1_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A7.1_T1.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.4.1_A6.1_T2
 author: Sam Mikes
 description: Promise.all([p1]) is resolved with a promise for a one-element array
+flags: [async]
 ---*/
 
 var p1 = Promise.resolve(3);
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A7.2_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A7.2_T1.js
index 10fd4989555675d4458a20298c6ef8b66c27bcfc..2ce3ad82a96004ed7e553d82a8a131771fa1542f 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A7.2_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A7.2_T1.js
@@ -9,6 +9,7 @@ es6id: S25.4.4.1_A7.2_T1
 author: Sam Mikes
 description: Promise.all() accepts a one-element array
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A8.1_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A8.1_T1.js
index 7e3df638ec46848d2ab0914b18b81b8a6b5b0096..d9e9cac5a098845daf46610ab11e86b2b1bd7ab2 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A8.1_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A8.1_T1.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.1_A8.1_T1
 author: Sam Mikes
 description: Promise.all([p1, p2]) resolution functions are called in predictable sequence
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A8.2_T1.js b/test/built-ins/Promise/all/S25.4.4.1_A8.2_T1.js
index 2bc4ba3635872c9013a85677161c70b148cb614d..e8f1320f714fb895ded12c93a92274ffc041d467 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A8.2_T1.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A8.2_T1.js
@@ -8,6 +8,7 @@ es6id: S25.4.4.1_A8.1_T1
 author: Sam Mikes
 description: Promise.all() rejects when a promise in its array rejects
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var rejectP1,
diff --git a/test/built-ins/Promise/all/S25.4.4.1_A8.2_T2.js b/test/built-ins/Promise/all/S25.4.4.1_A8.2_T2.js
index fdd2d449ae9d7ea8d52f231152d8b113b16ccbfa..58151d1405f51edca88a0b085429f7e84d1ebd94 100644
--- a/test/built-ins/Promise/all/S25.4.4.1_A8.2_T2.js
+++ b/test/built-ins/Promise/all/S25.4.4.1_A8.2_T2.js
@@ -8,6 +8,7 @@ es6id: S25.4.4.1_A8.2_T2
 author: Sam Mikes
 description: Promise.all() rejects when second promise in array rejects
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var rejectP2,
diff --git a/test/built-ins/Promise/all/does-not-invoke-array-setters.js b/test/built-ins/Promise/all/does-not-invoke-array-setters.js
index baac7abebef95ce02ecd45ce4fa9731d56d11460..364204a8a63b7541a3d9b5fc9bf658024433f237 100755
--- a/test/built-ins/Promise/all/does-not-invoke-array-setters.js
+++ b/test/built-ins/Promise/all/does-not-invoke-array-setters.js
@@ -24,6 +24,7 @@ info: >
       a. Let status be CreateDataProperty(array, ToString(n), e).
       b. Assert: status is true.
     ...
+flags: [async]
 ---*/
 
 Object.defineProperty(Array.prototype, 0, {
diff --git a/test/built-ins/Promise/all/invoke-resolve-get-error.js b/test/built-ins/Promise/all/invoke-resolve-get-error.js
index d7b7a092ca3a31edcd5606eba3bce53a22161495..70c220f0b9066e8f484f9d90eee74ca7b944f1cf 100644
--- a/test/built-ins/Promise/all/invoke-resolve-get-error.js
+++ b/test/built-ins/Promise/all/invoke-resolve-get-error.js
@@ -21,6 +21,7 @@ info: >
         [...]
         i. Let nextPromise be Invoke(constructor, "resolve", «nextValue»).
         j. ReturnIfAbrupt(nextPromise ).
+flags: [async]
 ---*/
 
 var error = new Test262Error();
diff --git a/test/built-ins/Promise/all/invoke-then-error.js b/test/built-ins/Promise/all/invoke-then-error.js
index 957093f2b5a7f529daf1b5515da1f1df03ad1545..a3fef19b001726e45d680d80b7f0c50b8e1c1686 100644
--- a/test/built-ins/Promise/all/invoke-then-error.js
+++ b/test/built-ins/Promise/all/invoke-then-error.js
@@ -22,6 +22,7 @@ info: >
         r. Let result be Invoke(nextPromise, "then", «resolveElement,
            resultCapability.[[Reject]]»).
         s. ReturnIfAbrupt(result).
+flags: [async]
 ---*/
 
 var promise = new Promise(function() {});
diff --git a/test/built-ins/Promise/all/iter-next-val-err.js b/test/built-ins/Promise/all/iter-next-val-err.js
index 902e7823e89df160cef36b8deb40291278ac4231..20a4d8f8e2854c4a5f0094eb5fe9fb3ef4ffd85e 100644
--- a/test/built-ins/Promise/all/iter-next-val-err.js
+++ b/test/built-ins/Promise/all/iter-next-val-err.js
@@ -24,6 +24,7 @@ info: >
            true.
         g. ReturnIfAbrupt(nextValue).
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterNextValThrows = {};
diff --git a/test/built-ins/Promise/all/iter-step-err.js b/test/built-ins/Promise/all/iter-step-err.js
index 6dcf6c7615b7be09efb70dd64169539dcea52d08..9ef1430b88c0a3a4ede4969457039fca94502070 100644
--- a/test/built-ins/Promise/all/iter-step-err.js
+++ b/test/built-ins/Promise/all/iter-step-err.js
@@ -23,6 +23,7 @@ info: >
            true.
         c. ReturnIfAbrupt(next).
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterStepThrows = {};
diff --git a/test/built-ins/Promise/all/reject-deferred.js b/test/built-ins/Promise/all/reject-deferred.js
index 6b7d43a1ea0ade6fa2e5e9e1d2a6ff3a1dd4c126..785fe8fdecb4598f7d346ab91b568f8f034bb3a7 100644
--- a/test/built-ins/Promise/all/reject-deferred.js
+++ b/test/built-ins/Promise/all/reject-deferred.js
@@ -20,6 +20,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/all/reject-ignored-deferred.js b/test/built-ins/Promise/all/reject-ignored-deferred.js
index 874e1d40f4c46a0efa433b7e718a6bd88500c8fe..aaf33eca188ac719be4a41a32c741a713c1c5776 100644
--- a/test/built-ins/Promise/all/reject-ignored-deferred.js
+++ b/test/built-ins/Promise/all/reject-ignored-deferred.js
@@ -25,6 +25,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var fulfiller = {
diff --git a/test/built-ins/Promise/all/reject-ignored-immed.js b/test/built-ins/Promise/all/reject-ignored-immed.js
index 6ef29d1c6bff0b17acb55e0a614d7bfa228d215f..9f3e190ca5b38185f5a2dc4250056b40cbabe427 100644
--- a/test/built-ins/Promise/all/reject-ignored-immed.js
+++ b/test/built-ins/Promise/all/reject-ignored-immed.js
@@ -25,6 +25,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var fulfiller = {
diff --git a/test/built-ins/Promise/all/reject-immed.js b/test/built-ins/Promise/all/reject-immed.js
index ce7ff4c4908cb52e76d852f555078dacfade0729..74560c7772b6af11612d034ce813689dc6ab38b6 100644
--- a/test/built-ins/Promise/all/reject-immed.js
+++ b/test/built-ins/Promise/all/reject-immed.js
@@ -20,6 +20,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/all/resolve-non-thenable.js b/test/built-ins/Promise/all/resolve-non-thenable.js
index 659e10a219985f1cbefeb2274be651d697057955..0c2905a64bd428ef1deaf32efd88e040700fbdb3 100644
--- a/test/built-ins/Promise/all/resolve-non-thenable.js
+++ b/test/built-ins/Promise/all/resolve-non-thenable.js
@@ -31,6 +31,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var v1 = {};
diff --git a/test/built-ins/Promise/all/resolve-poisoned-then.js b/test/built-ins/Promise/all/resolve-poisoned-then.js
index b8a17cf4f606de5412579757b897d63354d607ad..0d4722e10df490f5088d6ba656d3454bc17796c6 100644
--- a/test/built-ins/Promise/all/resolve-poisoned-then.js
+++ b/test/built-ins/Promise/all/resolve-poisoned-then.js
@@ -40,6 +40,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/all/resolve-thenable.js b/test/built-ins/Promise/all/resolve-thenable.js
index 99b32585d8faf12defab380e1c6e31d9e7175bc4..4651422d0bd8ffb54ee17c22cbda3fc41146b6fa 100644
--- a/test/built-ins/Promise/all/resolve-thenable.js
+++ b/test/built-ins/Promise/all/resolve-thenable.js
@@ -45,6 +45,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/exception-after-resolve-in-executor.js b/test/built-ins/Promise/exception-after-resolve-in-executor.js
index 747c562797217585c233dceee23abf6eebaec7bd..b5ae4ee5a82331dadf35312df3d279108d3aebc9 100755
--- a/test/built-ins/Promise/exception-after-resolve-in-executor.js
+++ b/test/built-ins/Promise/exception-after-resolve-in-executor.js
@@ -15,6 +15,7 @@ info: >
     a. Let status be Call(resolvingFunctions.[[Reject]], undefined, «completion.[[value]]»).
     b. ReturnIfAbrupt(status).
   ...
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/exception-after-resolve-in-thenable-job.js b/test/built-ins/Promise/exception-after-resolve-in-thenable-job.js
index f10db969b1a783faa27f281a17305a546da445c8..3cd4585edc03e572cc3aadc187b8e336b5aef02c 100755
--- a/test/built-ins/Promise/exception-after-resolve-in-thenable-job.js
+++ b/test/built-ins/Promise/exception-after-resolve-in-thenable-job.js
@@ -14,6 +14,7 @@ info: >
     a. Let status be Call(resolvingFunctions.[[Reject]], undefined, «thenCallResult.[[value]]»)
     b. NextJob Completion(status).
   ...
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T1.js b/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T1.js
index 036905899ff4345998c6a24c3e03a188e3fbc199..6bfb34c1d4df5d50a56672d575dcf0e3deb4b2a8 100644
--- a/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T1.js
+++ b/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T1.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.5.1_A3.1_T1
 author: Sam Mikes
 description: catch is implemented in terms of then
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T2.js b/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T2.js
index a1624e162085033196cbdce7c103acc4686a5376..fd2cff8d2b4b9b082ed13c8192c1868f42006907 100644
--- a/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T2.js
+++ b/test/built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T2.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.5.1_A3.1_T2
 author: Sam Mikes
 description: catch is implemented in terms of then
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/then/S25.4.4_A1.1_T1.js b/test/built-ins/Promise/prototype/then/S25.4.4_A1.1_T1.js
index f248d345cc14756f186b2adcbee9847a186db627..a1c2edcc7e25324ed309ca6f0dca6c4f47f24bb0 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.4_A1.1_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.4_A1.1_T1.js
@@ -9,6 +9,7 @@ es6id: S25.4.2.1_A3.2_T2
 author: Sam Mikes
 description: Promise onResolved functions are called in predictable sequence
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T1.js b/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T1.js
index 1daafe5527ed8320f7ed5de7bc54a01e505cc61d..33c1f555a55e669ea639d69a0476dc42e53cca48 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T1.js
@@ -10,6 +10,7 @@ es6id: S25.4.4_A2.1_T1
 author: Sam Mikes
 description: Promise onResolved functions are called in predictable sequence
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var resolveP1, rejectP2, sequence = [];
diff --git a/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T2.js b/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T2.js
index 8bebe81877acdd2e7c8195750f897ca6c03d54fa..b5bf2c89e6b82f9701274268cf84c44c32440442 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T2.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T2.js
@@ -10,6 +10,7 @@ es6id: S25.4.4_A2.1_T2
 author: Sam Mikes
 description: Promise onResolved functions are called in predictable sequence
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var resolveP1, rejectP2, p1, p2,
diff --git a/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T3.js b/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T3.js
index 2476658a1f61ea2a6b739c6aeb265f4a63e072b7..17992e0011e9d85fe25077e163a3255bbd92c68c 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T3.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T3.js
@@ -10,6 +10,7 @@ es6id: S25.4.4_A2.1_T3
 author: Sam Mikes
 description: Promise onResolved functions are called in predictable sequence
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var resolveP1, rejectP2, p1, p2,
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T1.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T1.js
index 960604db5be359979774779a63df0de08e0cdefe..e70669dcfc0e73a11fd4253e5e6c250e82a00bcc 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T1.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.5.3_A4.1_T1
 author: Sam Mikes
 description: Promise.prototype.then accepts 'undefined' as arg1, arg2
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T2.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T2.js
index 3c817f4f8ca6af6057c8fc1ee970e7e240ace048..660cc633b333a4178f90b17303e9036b3ab1f3bb 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T2.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T2.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.5.3_A4.1_T2
 author: Sam Mikes
 description: Promise.prototype.then accepts 'undefined' as arg1, arg2
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T1.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T1.js
index 978e1b52abf9a48aaeaa6fc8c2b64194675b5a0f..76e1b6f4ecb3e9d1c2c899a4064b1ec8063f758a 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T1.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.5.3_A4.2_T1
 author: Sam Mikes
 description: Promise.prototype.then treats non-callable arg1, arg2 as undefined
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T2.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T2.js
index 41bec78e6bbbef37a1c02f30dacb7104897ef69b..37e3efb5b2dd0ed798e34ed87703b3c205f78810 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T2.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T2.js
@@ -8,6 +8,7 @@ info: >
 es6id: S25.4.5.3_A4.2_T2
 author: Sam Mikes
 description: Promise.prototype.then treats non-callable arg1, arg2 as undefined
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.1_T1.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.1_T1.js
index c10f5340375a0289d5f98996d52f0a6e5f265e6b..b97ae3fc9a01d58c47bc4b4286870c576a8e346b 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.1_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.1_T1.js
@@ -9,6 +9,7 @@ es6id: S25.4.5.3_A5.1_T1
 author: Sam Mikes
 description: Promise.prototype.then enqueues handler if pending
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [],
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.2_T1.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.2_T1.js
index 46c05ad91786cc4b57511f29c892ff92c71e9a83..92ad8b82d4455fb38930e3042efdb8d56c8de483 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.2_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.2_T1.js
@@ -9,6 +9,7 @@ es6id: S25.4.5.3_A5.2_T1
 author: Sam Mikes
 description: Promise.prototype.then immediately queues handler if fulfilled
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [],
diff --git a/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.3_T1.js b/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.3_T1.js
index d41180713f766ca3b0a0fdf215f688e8a499b3de..27c65f26921ab057b7bdcedc39e1ff1f64d7bc75 100644
--- a/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.3_T1.js
+++ b/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.3_T1.js
@@ -9,6 +9,7 @@ es6id: S25.4.5.3_A5.3_T1
 author: Sam Mikes
 description: Promise.prototype.then immediately queues handler if rejected
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [],
diff --git a/test/built-ins/Promise/prototype/then/deferred-is-resolved-value.js b/test/built-ins/Promise/prototype/then/deferred-is-resolved-value.js
index 62063fde4580a4b517531338659c3f8d484b6c18..4b471cd016b2da7f23af5c98d5cc684421715561 100755
--- a/test/built-ins/Promise/prototype/then/deferred-is-resolved-value.js
+++ b/test/built-ins/Promise/prototype/then/deferred-is-resolved-value.js
@@ -34,6 +34,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined, «handlerResult.[[value]]»).
     9. NextJob Completion(status).
 features: [class]
+flags: [async]
 ---*/
 
 var createBadPromise = false;
diff --git a/test/built-ins/Promise/prototype/then/prfm-fulfilled.js b/test/built-ins/Promise/prototype/then/prfm-fulfilled.js
index ac49fee03e547671a4560a88fc4e5b7286f99b35..3d8ddee077885eb0d1f0bce403cb20e5a369b8cd 100644
--- a/test/built-ins/Promise/prototype/then/prfm-fulfilled.js
+++ b/test/built-ins/Promise/prototype/then/prfm-fulfilled.js
@@ -16,6 +16,7 @@ info: >
        b. Perform EnqueueJob("PromiseJobs", PromiseReactionJob,
           «fulfillReaction, value»).
     [...]
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/prfm-pending-fulfulled.js b/test/built-ins/Promise/prototype/then/prfm-pending-fulfulled.js
index b0d63c056e478de4f367bc4c0720d7d2f713388e..94f4b140072f88b90a865a598c89ccc1524179cc 100644
--- a/test/built-ins/Promise/prototype/then/prfm-pending-fulfulled.js
+++ b/test/built-ins/Promise/prototype/then/prfm-pending-fulfulled.js
@@ -16,6 +16,7 @@ info: >
        b. Append rejectReaction as the last element of the List that is the
           value of promise's [[PromiseRejectReactions]] internal slot.
     [...]
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/prfm-pending-rejected.js b/test/built-ins/Promise/prototype/then/prfm-pending-rejected.js
index 23afce4b32d923dbaede319f2ba0e4097a8147af..083df48d769ea1a953e93836c7a91ce83e3883fe 100644
--- a/test/built-ins/Promise/prototype/then/prfm-pending-rejected.js
+++ b/test/built-ins/Promise/prototype/then/prfm-pending-rejected.js
@@ -16,6 +16,7 @@ info: >
        b. Append rejectReaction as the last element of the List that is the
           value of promise's [[PromiseRejectReactions]] internal slot.
     [...]
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/prfm-rejected.js b/test/built-ins/Promise/prototype/then/prfm-rejected.js
index 727eea81f189861de21ef418cb2f50b47b372c83..6e91adcda0ef3e262c0afa72d6903e9908ed95d9 100644
--- a/test/built-ins/Promise/prototype/then/prfm-rejected.js
+++ b/test/built-ins/Promise/prototype/then/prfm-rejected.js
@@ -16,6 +16,7 @@ info: >
        b. Perform EnqueueJob("PromiseJobs", PromiseReactionJob,
           «rejectReaction, reason»).
     [...]
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/reject-pending-fulfilled.js b/test/built-ins/Promise/prototype/then/reject-pending-fulfilled.js
index f89ea8a8a841457650f86c1f9e215ebe85bc7b31..07584596edc3dc12f44df5f587b3cf3ee0015b3e 100644
--- a/test/built-ins/Promise/prototype/then/reject-pending-fulfilled.js
+++ b/test/built-ins/Promise/prototype/then/reject-pending-fulfilled.js
@@ -18,6 +18,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var resolve;
diff --git a/test/built-ins/Promise/prototype/then/reject-pending-rejected.js b/test/built-ins/Promise/prototype/then/reject-pending-rejected.js
index fee40661992c18a80134ad7a1b28baba97b0d62a..bcbca0d1af91c968f8f658403a1187f861b90663 100644
--- a/test/built-ins/Promise/prototype/then/reject-pending-rejected.js
+++ b/test/built-ins/Promise/prototype/then/reject-pending-rejected.js
@@ -19,6 +19,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var reject;
diff --git a/test/built-ins/Promise/prototype/then/reject-settled-fulfilled.js b/test/built-ins/Promise/prototype/then/reject-settled-fulfilled.js
index bc638eaf5128a5e66614a296bf6150296f5c1280..32a0a6a3b15bf90f115435bf0ef63af1c4720bd3 100644
--- a/test/built-ins/Promise/prototype/then/reject-settled-fulfilled.js
+++ b/test/built-ins/Promise/prototype/then/reject-settled-fulfilled.js
@@ -26,6 +26,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = new Promise(function(resolve) { resolve(); });
diff --git a/test/built-ins/Promise/prototype/then/reject-settled-rejected.js b/test/built-ins/Promise/prototype/then/reject-settled-rejected.js
index 487b94444ca02c5fbd7c26f02813e71df1919a34..042fa25594ec152f8713f1f30c7150aad7b2db38 100644
--- a/test/built-ins/Promise/prototype/then/reject-settled-rejected.js
+++ b/test/built-ins/Promise/prototype/then/reject-settled-rejected.js
@@ -26,6 +26,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = new Promise(function(resolve) { resolve(); });
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-obj.js b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-obj.js
index 65f95ba0b69cd7b3fb5dca56da242d56461287cc..fde854afa61bfd6cfc8c6040be14c27889bcd497 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-obj.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-obj.js
@@ -18,6 +18,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var resolve;
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-thenable.js b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-thenable.js
index 8012d94a7df18664abfbd2cec7b257a62a56a942..e2ecdf7b7e9d7a70794a5f7ae412dfe5866fc9ca 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-non-thenable.js
@@ -23,6 +23,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var nonThenable = { then: null };
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-poisoned-then.js b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-poisoned-then.js
index 9abf9511e31e5423d1be88a89525a71471423ec5..1d050c6a3165ca466f996fba15c74496b699f8c2 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-poisoned-then.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-poisoned-then.js
@@ -20,6 +20,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-self.js b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-self.js
index 9a2f1da696203b3715fb8f6b7f01beaa0df90cd7..e588fe94052bd935902ac76c848e6f01c6a89584 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-self.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-self.js
@@ -20,6 +20,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var resolve;
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-thenable.js b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-thenable.js
index a6153bc8f1652dc8b932e838eb76e5acdd90172b..de26a13259bfb94b7a92a445580055b340047d95 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-fulfilled-thenable.js
@@ -25,6 +25,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-obj.js b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-obj.js
index 576cdf0067646aa486d5301d5e614d3d75bb1af7..0bbf700b0da5d3b63a128968125c2aef5cdd0492 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-obj.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-obj.js
@@ -19,6 +19,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var reject;
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-thenable.js b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-thenable.js
index 95191b0b8817f0377ebb7e01dc9b29c57521db06..4087ddfee724316cb66cb4f032eb2d86efd292ad 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-non-thenable.js
@@ -24,6 +24,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var nonThenable = { then: null };
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-poisoned-then.js b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-poisoned-then.js
index f7808d038d28a8c87f4c554c86b97d7c2765f1f8..db166e8063c5a40bc9795cd49f40c75892f9e688 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-poisoned-then.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-poisoned-then.js
@@ -21,6 +21,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-self.js b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-self.js
index 87937e398cf957edeaa526ea650756a277d4c221..e30f32ec638e6cb5ffef6496e51bb41bd718fdcd 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-self.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-self.js
@@ -21,6 +21,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var reject;
diff --git a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-thenable.js b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-thenable.js
index bb33553bd9b14045c8f5d39089dbc7b9d9f2ff5d..1ebbfbcb0083fe7e9f330639b8c70b8f744042ad 100644
--- a/test/built-ins/Promise/prototype/then/resolve-pending-rejected-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-pending-rejected-thenable.js
@@ -26,6 +26,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-obj.js b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-obj.js
index 35e9e3f7fadb61ccf3f5253dd687d4866af5c3aa..3f39485e50c195f9a98e0c11a1a0eb3373f46411 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-obj.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-obj.js
@@ -25,6 +25,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var p1 = new Promise(function(resolve) { resolve(); });
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-thenable.js b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-thenable.js
index 07c40145a546a240fce26394688b6424c36d2c8f..1166af3a7a7446a63404f58edbbe4dc09dcf8ca8 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-non-thenable.js
@@ -30,6 +30,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var nonThenable = { then: null };
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-poisoned-then.js b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-poisoned-then.js
index ef5a9e0834afdce42c976f49ca11b790649a1987..9254f36e165c0868f81c351e3fcaf5c3d16e5521 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-poisoned-then.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-poisoned-then.js
@@ -27,6 +27,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-self.js b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-self.js
index d97a348c2bd9c94f2b295980acfa52b9d5780e98..ac2630247363cc1f6d9d0a8b84a058e6243b3eee 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-self.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-self.js
@@ -27,6 +27,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var p1 = new Promise(function(resolve) { resolve(); });
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-thenable.js b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-thenable.js
index 86691de55cf89e37e992fe18b7331e848fa66906..447c248b5f4757355ef5470e24a3e313308ca2d4 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-fulfilled-thenable.js
@@ -32,6 +32,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-obj.js b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-obj.js
index f9151850dc5c40a448cd63c119781ee852bce0c8..bd1ccb95046919b8912178f313b187dc1df29738 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-obj.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-obj.js
@@ -25,6 +25,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var p1 = new Promise(function(_, reject) { reject(); });
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-thenable.js b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-thenable.js
index 421376088fd65e980206294aa16b2f4fa6602b63..92c48e7b881e54ae889a232f0c098026b43f3edc 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-non-thenable.js
@@ -30,6 +30,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var nonThenable = { then: null };
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-poisoned-then.js b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-poisoned-then.js
index 785f557b7b7f2e759867fcca5f4c6bcf79854973..b276b27ac0989b4ee092618b53d92d4d02c0e50d 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-poisoned-then.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-poisoned-then.js
@@ -27,6 +27,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-self.js b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-self.js
index cfdf3e4b0a466248ba0eb4cb1748f264bac1bc6e..5aa5d6a2eee5e2fc70c8787f0859255dda787774 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-self.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-self.js
@@ -27,6 +27,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var p1 = new Promise(function(_, reject) { reject(); });
diff --git a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-thenable.js b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-thenable.js
index 9d1ee3f629c20c695fbacce26b4e10bdfcef1671..65656f39f1dac9bfa5e1257bd0f56063e8d7ce64 100644
--- a/test/built-ins/Promise/prototype/then/resolve-settled-rejected-thenable.js
+++ b/test/built-ins/Promise/prototype/then/resolve-settled-rejected-thenable.js
@@ -32,6 +32,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js
index c149da931afb5b81ef0aeef8f27a4ff2216b814a..7861def3814bf117bdfe33d1b181374680a01e23 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js
@@ -9,7 +9,7 @@ es6id: S25.4.2.1_A3.1_T1
 author: Sam Mikes
 description: >
     "fulfilled" handler invoked correctly outside of strict mode
-flags: [noStrict]
+flags: [async, noStrict]
 includes: [fnGlobalObject.js]
 ---*/
 
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-strict.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-strict.js
index 33068c06e41ace2e34f39636af17eca8a2b493be..fef11c32c0508e594f2316fedbb8aee639520751 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-strict.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-strict.js
@@ -9,7 +9,7 @@ es6id: S25.4.2.1_A3.1_T2
 author: Sam Mikes
 description: >
     "fulfilled" handler invoked correctly in strict mode
-flags: [onlyStrict]
+flags: [async, onlyStrict]
 ---*/
 
 var expectedThis = undefined,
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next-abrupt.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next-abrupt.js
index 00d6aeff0442eb98ef5fa4f6dca043ca7344d1d3..06816900d4e5e132c86d91af86cb00435f92046a 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next-abrupt.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next-abrupt.js
@@ -12,6 +12,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var promise = new Promise(function(resolve) {
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next.js
index 1443459a1643d10e7ce7c1aae58f1c55af77ae52..287036209fc1e47f11b1c6c5ac9736ea2ddd7dc9 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next.js
@@ -12,6 +12,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var promise = new Promise(function(resolve) {
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-abrupt.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-abrupt.js
index 429c3171f52e1dadaada48524ed1b57b11233e26..88ad121f220e782f61efdfb5b68abcddbc7a3050 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-abrupt.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-abrupt.js
@@ -25,6 +25,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-normal.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-normal.js
index 4437d5fb7356a47ffe36b272d26fb2a71480921b..752068bc4166946c4b170024dd71d2789354ccbd 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-normal.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-return-normal.js
@@ -25,6 +25,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-identity.js b/test/built-ins/Promise/prototype/then/rxn-handler-identity.js
index 6230f9c9bea85691f769d25dd182c17053656e0d..15373194578c62640c4dd7e049c8fd104a9e05be 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-identity.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-identity.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.2.1_A1.1_T1
 author: Sam Mikes
 description: argument passes through "Identity"
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js
index ee2bff37221ff789d9f0eb9010cffa50cf5c5a4d..d01480d0c9a4213be93946ffd2e41d5ef8f40543 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js
@@ -9,7 +9,7 @@ es6id: S25.4.2.1_A3.2_T1
 author: Sam Mikes
 description: >
     "rejected" handler invoked correctly outside of strict mode
-flags: [noStrict]
+flags: [async, noStrict]
 includes: [fnGlobalObject.js]
 ---*/
 
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-strict.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-strict.js
index c782ddb9d005083d51acdd70ffd680e994593cdc..116ea1a1410bbe4684ad36390d0f8be85ae90f87 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-strict.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-strict.js
@@ -9,7 +9,7 @@ es6id: S25.4.2.1_A3.2_T2
 author: Sam Mikes
 description: >
     "rejected" handler invoked correctly in strict mode
-flags: [onlyStrict]
+flags: [async, onlyStrict]
 ---*/
 
 var expectedThis = undefined,
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next-abrupt.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next-abrupt.js
index 6c3d18b40d9795583debf3ed8b4b7822e3324620..f217bddcbc4f0e900d5648c9bdbf9a214a12ab42 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next-abrupt.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next-abrupt.js
@@ -12,6 +12,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var promise = new Promise(function(_, reject) {
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next.js
index 59a3916b3a9319606927f322ce3a952b33605458..9ab10d84af67f0cc9ad5c48dc636bc2e6bd9ec06 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-next.js
@@ -12,6 +12,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var promise = new Promise(function(_, reject) {
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-abrupt.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-abrupt.js
index 5b95a5a042a3e18bbcaf85de6a2ba2c18359447e..857e0b6e82ffc7ae821c4991fe425c9228c5157b 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-abrupt.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-abrupt.js
@@ -25,6 +25,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-normal.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-normal.js
index 1277801c501276724928cd9372cb8cd09dde817b..80adf6382f45cd5322d22d7f51e8fa5427fe22e8 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-normal.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-return-normal.js
@@ -25,6 +25,7 @@ info: >
     8. Let status be Call(promiseCapability.[[Resolve]], undefined,
        «handlerResult.[[value]]»).
     9. NextJob Completion(status).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-thrower.js b/test/built-ins/Promise/prototype/then/rxn-handler-thrower.js
index 437792f970d62b50a8bc783796c07588e0ea7f3a..d2d9cacd8ee7a0bf5d954cd908767bdaacd0c173 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-thrower.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-thrower.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.2.1_A2.1_T1
 author: Sam Mikes
 description: argument thrown through "Thrower"
+flags: [async]
 ---*/
 
 var obj = {};
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A2.2_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A2.2_T1.js
index 70e2f001be7ab7db8ad62c5af4e08a8a7ff6815d..87a7c610a3c0a65f41842978d1dc6368409d052c 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A2.2_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A2.2_T1.js
@@ -6,6 +6,7 @@ info: Promise.race rejects on non-iterable argument
 es6id: S25.4.4.3_A2.2_T1
 author: Sam Mikes
 description: Promise.race rejects if argument is not object or is non-iterable
+flags: [async]
 ---*/
 
 var nonIterable = 3;
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A2.2_T2.js b/test/built-ins/Promise/race/S25.4.4.3_A2.2_T2.js
index e4188ee458a6bec6285e6c9f257175719c07afdd..cca930722030d8d8d850fa08c4b8938bd4ec178e 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A2.2_T2.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A2.2_T2.js
@@ -6,6 +6,7 @@ info: Promise.race rejects on non-iterable argument
 es6id: S25.4.4.3_A2.2_T2
 author: Sam Mikes
 description: Promise.race rejects if argument is not object or is non-iterable
+flags: [async]
 ---*/
 
 Promise.race(new Error("abrupt")).then(function () {
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A2.2_T3.js b/test/built-ins/Promise/race/S25.4.4.3_A2.2_T3.js
index 1714b4f1843a293d518d8795234ae93a46b4a6ed..464d6213580cc663c26db54df13f120d902f5305 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A2.2_T3.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A2.2_T3.js
@@ -10,6 +10,7 @@ es6id: S25.4.4.3_A2.2_T3
 author: Sam Mikes
 description: Promise.race rejects if GetIterator throws
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterThrows = {};
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A4.1_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A4.1_T1.js
index e6228c373936b72a8216f3b5ad4a8fcb12611d78..a325a995be6abd93581ac5409146ce7deb2e6a1c 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A4.1_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A4.1_T1.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A4.1_T1
 author: Sam Mikes
 description: Promise.race rejects if IteratorStep throws
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterThrows = {};
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A4.1_T2.js b/test/built-ins/Promise/race/S25.4.4.3_A4.1_T2.js
index b3158a1e3ebe44889cd61471b5ddc37ad25b3ac2..00ac77d1b3c931a8f74f36b2cb33c59cc435d3cb 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A4.1_T2.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A4.1_T2.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A4.1_T2
 author: Sam Mikes
 description: Promise.race rejects if IteratorStep throws
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterThrows = {};
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A5.1_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A5.1_T1.js
index cc9042d2a7d24d2f3b561d8880c0b1c55c91f076..e5b7526fde01b7bff1a76162e9e3ad4fa346ef7c 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A5.1_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A5.1_T1.js
@@ -5,6 +5,7 @@
 es6id: S25.4.4.3_A5.1_T1
 author: Sam Mikes
 description: Promise.race([]) never settles
+flags: [async]
 ---*/
 
 var p = Promise.race([]);
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A6.1_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A6.1_T1.js
index e3a8cb6088469c49a42f94896c63f48ddd387b6d..99c327c5ce0666396c66587a45601c2cb8755112 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A6.1_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A6.1_T1.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A6.1_T1
 author: Sam Mikes
 description: Promise.race([1]) settles immediately
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A6.2_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A6.2_T1.js
index 35b71d966b4a0e53bcd23dd5452370f0a84cd933..93468f86938a780f058691f709a03a43f0163a08 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A6.2_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A6.2_T1.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A6.2_T1
 author: Sam Mikes
 description: Promise.race([p1]) settles immediately
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A7.1_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A7.1_T1.js
index 8e5636a79fe2ec7c9bc11ee7ced85ff944b410ca..9f0848429f25d2c3320ba807d6609a56888129a4 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A7.1_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A7.1_T1.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A7.1_T1
 author: Sam Mikes
 description: Promise.race([p1, p2]) settles when first settles
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A7.1_T2.js b/test/built-ins/Promise/race/S25.4.4.3_A7.1_T2.js
index a07716d6b19d2ebe4a320894f4ae19b791b5b8e9..6f4030d7d478d70c8cff4d0f9dc06566c83d285a 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A7.1_T2.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A7.1_T2.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A7.1_T2
 author: Sam Mikes
 description: Promise.race([p1, p2]) settles when first settles
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A7.1_T3.js b/test/built-ins/Promise/race/S25.4.4.3_A7.1_T3.js
index 941d794743e30634d89437c61edcfc30e16ac916..047dd65d27c3e96111c412f975d5fa778ab23241 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A7.1_T3.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A7.1_T3.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A7.1_T3
 author: Sam Mikes
 description: Promise.race([p1, p2]) settles when first settles
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A7.2_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A7.2_T1.js
index 6dbf6fc956d78a8a5291ef63c592524ee0bed895..fbbdcf95eed3351fa27ad157a31f6a11acfa69d8 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A7.2_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A7.2_T1.js
@@ -6,6 +6,7 @@ es6id: S25.4.4.3_A7.2_T1
 author: Sam Mikes
 description: Promise.race([p1, p2]) settles when first settles
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A7.3_T1.js b/test/built-ins/Promise/race/S25.4.4.3_A7.3_T1.js
index aedf18bfec4c92fc5798c8b71b8db863441de562..02dad7f9dfcec1c7e9ee988530b258cc2fb4be5b 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A7.3_T1.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A7.3_T1.js
@@ -5,6 +5,7 @@
 es6id: S25.4.4.3_A7.3_T1
 author: Sam Mikes
 description: Promise.race([p1, p2]) settles when first settles
+flags: [async]
 ---*/
 
 var resolveP1, rejectP2,
diff --git a/test/built-ins/Promise/race/S25.4.4.3_A7.3_T2.js b/test/built-ins/Promise/race/S25.4.4.3_A7.3_T2.js
index 8609e5dd798db3c8336de1695787ed509b19d806..535116ea1926df216d2fd44a8a7e17d4b31db37a 100644
--- a/test/built-ins/Promise/race/S25.4.4.3_A7.3_T2.js
+++ b/test/built-ins/Promise/race/S25.4.4.3_A7.3_T2.js
@@ -5,6 +5,7 @@
 es6id: S25.4.4.3_A7.3_T2
 author: Sam Mikes
 description: Promise.race([p1, p2]) settles when first settles
+flags: [async]
 ---*/
 
 var resolveP1, rejectP2,
diff --git a/test/built-ins/Promise/race/invoke-resolve-get-error.js b/test/built-ins/Promise/race/invoke-resolve-get-error.js
index 2ed029d5e90fa9d324cc51b1c4cbb2b16411b4ed..9fa2dc6ad4c31230de2a27a3c12065a96612e1bb 100644
--- a/test/built-ins/Promise/race/invoke-resolve-get-error.js
+++ b/test/built-ins/Promise/race/invoke-resolve-get-error.js
@@ -20,6 +20,7 @@ info: >
         [...]
         h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
         i. ReturnIfAbrupt(nextPromise).
+flags: [async]
 ---*/
 
 var error = new Test262Error();
diff --git a/test/built-ins/Promise/race/invoke-then-error.js b/test/built-ins/Promise/race/invoke-then-error.js
index b2f79f53439774e81d5118f0f9bda835e3f71d6f..184e3ea5b141b3e7f22f35c9e24bc886bf6c3f97 100644
--- a/test/built-ins/Promise/race/invoke-then-error.js
+++ b/test/built-ins/Promise/race/invoke-then-error.js
@@ -21,6 +21,7 @@ info: >
         j. Let result be Invoke(nextPromise, "then",
            «promiseCapability.[[Resolve]], promiseCapability.[[Reject]]»).
         k. ReturnIfAbrupt(result).
+flags: [async]
 ---*/
 
 var promise = new Promise(function() {});
diff --git a/test/built-ins/Promise/race/iter-close.js b/test/built-ins/Promise/race/iter-close.js
index 02858893aa36b304e42fff86ab2c9c4506fff59f..f66dc68c3c93b5df9b6ada0ed998b1e0e51a4fd7 100644
--- a/test/built-ins/Promise/race/iter-close.js
+++ b/test/built-ins/Promise/race/iter-close.js
@@ -20,6 +20,7 @@ info: >
        h. Let nextPromise be Invoke(C, "resolve", «nextValue»).
        i. ReturnIfAbrupt(nextPromise).
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var err = new Test262Error();
diff --git a/test/built-ins/Promise/race/iter-next-val-err.js b/test/built-ins/Promise/race/iter-next-val-err.js
index eca773a9e64a437191d689be7b0f6665e447ed15..dfa2177a97cc779b70eeee7183299275bdb8c361 100644
--- a/test/built-ins/Promise/race/iter-next-val-err.js
+++ b/test/built-ins/Promise/race/iter-next-val-err.js
@@ -23,6 +23,7 @@ info: >
            true.
         g. ReturnIfAbrupt(nextValue).
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterNextValThrows = {};
diff --git a/test/built-ins/Promise/race/iter-step-err.js b/test/built-ins/Promise/race/iter-step-err.js
index e24847550093a2083e46b1c767b65e9f541d0c31..d7dfd34d310e0a4c22f16867ff51bc6343def177 100644
--- a/test/built-ins/Promise/race/iter-step-err.js
+++ b/test/built-ins/Promise/race/iter-step-err.js
@@ -19,6 +19,7 @@ info: >
        b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
        c. ReturnIfAbrupt(next).
 features: [Symbol.iterator]
+flags: [async]
 ---*/
 
 var iterStepThrows = {};
diff --git a/test/built-ins/Promise/race/reject-deferred.js b/test/built-ins/Promise/race/reject-deferred.js
index e070cef6e2d2cbe11675cffb475eadac16b00dd0..5c7d7cd0d50c75f6f4b3e9b8a610ad7585f9eaa6 100644
--- a/test/built-ins/Promise/race/reject-deferred.js
+++ b/test/built-ins/Promise/race/reject-deferred.js
@@ -19,6 +19,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/race/reject-ignored-deferred.js b/test/built-ins/Promise/race/reject-ignored-deferred.js
index bf63e7328be2a1f8ec9c29225f2415fdb6633424..4ebc4ac7991b3f749ec18157aca9af483a4264f3 100644
--- a/test/built-ins/Promise/race/reject-ignored-deferred.js
+++ b/test/built-ins/Promise/race/reject-ignored-deferred.js
@@ -24,6 +24,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var fulfiller = {
diff --git a/test/built-ins/Promise/race/reject-ignored-immed.js b/test/built-ins/Promise/race/reject-ignored-immed.js
index a22eac484f562c1c5698a32b4000633909db54fc..c1b0885dca3facabd1e0d3ce2aa3ecae9e8337e3 100644
--- a/test/built-ins/Promise/race/reject-ignored-immed.js
+++ b/test/built-ins/Promise/race/reject-ignored-immed.js
@@ -24,6 +24,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var fulfiller = {
diff --git a/test/built-ins/Promise/race/reject-immed.js b/test/built-ins/Promise/race/reject-immed.js
index 4cfc9a925f4b0cda8bc47f1b5748bcf7a404ac94..fd1e6457762f94a716da3ff6664160ea21a9dacb 100644
--- a/test/built-ins/Promise/race/reject-immed.js
+++ b/test/built-ins/Promise/race/reject-immed.js
@@ -19,6 +19,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/race/resolve-non-obj.js b/test/built-ins/Promise/race/resolve-non-obj.js
index 6dfd31a9cbfc25808bd39d79e595c50aae8e7568..6b39a974ab94c2aad5823f110562ec9c5184f278 100644
--- a/test/built-ins/Promise/race/resolve-non-obj.js
+++ b/test/built-ins/Promise/race/resolve-non-obj.js
@@ -20,6 +20,7 @@ info: >
     [...]
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var thenable = {
diff --git a/test/built-ins/Promise/race/resolve-non-thenable.js b/test/built-ins/Promise/race/resolve-non-thenable.js
index 179ab43445ca66ac1b9e2e617e05a511fc8c2ef7..e5b8671e480a2bd7d477167446fa806a6f4b5e3d 100644
--- a/test/built-ins/Promise/race/resolve-non-thenable.js
+++ b/test/built-ins/Promise/race/resolve-non-thenable.js
@@ -24,6 +24,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/race/resolve-poisoned-then.js b/test/built-ins/Promise/race/resolve-poisoned-then.js
index c25563dad430948e42a9180ae707c4aad777a74b..1d3470afeee2595de28e777ecd0637df4217dab2 100644
--- a/test/built-ins/Promise/race/resolve-poisoned-then.js
+++ b/test/built-ins/Promise/race/resolve-poisoned-then.js
@@ -20,6 +20,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/race/resolve-self.js b/test/built-ins/Promise/race/resolve-self.js
index 511a03200a0dc741b81fb718bf74ba229b7819b5..9bf40fc474f9f88d4b62db223e209dcf41ef6aaf 100644
--- a/test/built-ins/Promise/race/resolve-self.js
+++ b/test/built-ins/Promise/race/resolve-self.js
@@ -20,6 +20,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var self, resolve;
diff --git a/test/built-ins/Promise/race/resolve-thenable.js b/test/built-ins/Promise/race/resolve-thenable.js
index 8eb3f059c6bc0a9b8ad5b627c0280907d247da6d..c1512d9c5daa6430504e18fd060cb493ffcad477 100644
--- a/test/built-ins/Promise/race/resolve-thenable.js
+++ b/test/built-ins/Promise/race/resolve-thenable.js
@@ -26,6 +26,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/reject-ignored-via-abrupt.js b/test/built-ins/Promise/reject-ignored-via-abrupt.js
index f3cb6c7a778d1fe7ea8bca99c8ee4f68391bd44d..23848a79ddd411b7da3399eb4e66b5398ae6bf56 100644
--- a/test/built-ins/Promise/reject-ignored-via-abrupt.js
+++ b/test/built-ins/Promise/reject-ignored-via-abrupt.js
@@ -18,6 +18,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var thenable = new Promise(function() {});
diff --git a/test/built-ins/Promise/reject-ignored-via-fn-deferred.js b/test/built-ins/Promise/reject-ignored-via-fn-deferred.js
index 10b0d81e03031b0c89d0d654ee1decf8e73c2d66..117722fa149f6b97e095debcf565d1453eff8576 100644
--- a/test/built-ins/Promise/reject-ignored-via-fn-deferred.js
+++ b/test/built-ins/Promise/reject-ignored-via-fn-deferred.js
@@ -18,6 +18,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var thenable = new Promise(function() {});
diff --git a/test/built-ins/Promise/reject-ignored-via-fn-immed.js b/test/built-ins/Promise/reject-ignored-via-fn-immed.js
index bd856a342f06acc458d049250de75704c808a9a8..1e97f5d917ee23617734ac9c34dd8561d6e6ca69 100644
--- a/test/built-ins/Promise/reject-ignored-via-fn-immed.js
+++ b/test/built-ins/Promise/reject-ignored-via-fn-immed.js
@@ -18,6 +18,7 @@ info: >
     3. Let alreadyResolved be the value of F's [[AlreadyResolved]] internal
        slot.
     4. If alreadyResolved.[[value]] is true, return undefined.
+flags: [async]
 ---*/
 
 var thenable = new Promise(function() {});
diff --git a/test/built-ins/Promise/reject-via-abrupt.js b/test/built-ins/Promise/reject-via-abrupt.js
index 6e608bdc22b6c412e3e65b3c700ca2903bd43c66..2916102000564a5aaf6e52dbce81f3cdd96b1064 100644
--- a/test/built-ins/Promise/reject-via-abrupt.js
+++ b/test/built-ins/Promise/reject-via-abrupt.js
@@ -16,6 +16,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = new Promise(function() {});
diff --git a/test/built-ins/Promise/reject-via-fn-deferred.js b/test/built-ins/Promise/reject-via-fn-deferred.js
index 855d92b4100017102ad5165ca460d3a839c6152e..fca3fcafcbda3032459c785efa4c280eff2ca715 100644
--- a/test/built-ins/Promise/reject-via-fn-deferred.js
+++ b/test/built-ins/Promise/reject-via-fn-deferred.js
@@ -14,6 +14,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = new Promise(function() {});
diff --git a/test/built-ins/Promise/reject-via-fn-immed.js b/test/built-ins/Promise/reject-via-fn-immed.js
index 474db80d8b7bfd5628519cc4132b0560f2bd1b6d..26e841f7f0c31568b35842a9daf031fab57f3be4 100644
--- a/test/built-ins/Promise/reject-via-fn-immed.js
+++ b/test/built-ins/Promise/reject-via-fn-immed.js
@@ -14,6 +14,7 @@ info: >
     25.4.1.3.1 Promise Reject Functions
     [...]
     6. Return RejectPromise(promise, reason).
+flags: [async]
 ---*/
 
 var thenable = new Promise(function() {});
diff --git a/test/built-ins/Promise/reject/S25.4.4.4_A2.1_T1.js b/test/built-ins/Promise/reject/S25.4.4.4_A2.1_T1.js
index bc589ac13f992ba88ac95dee145da19064ad2fad..0b189e52ae32d4caa29666ba5008c25c0fca9e26 100644
--- a/test/built-ins/Promise/reject/S25.4.4.4_A2.1_T1.js
+++ b/test/built-ins/Promise/reject/S25.4.4.4_A2.1_T1.js
@@ -13,6 +13,7 @@ info: >
 es6id: 25.4.4.4
 author: Sam Mikes
 description: Promise.reject creates a new settled promise
+flags: [async]
 ---*/
 
 var p = Promise.reject(3);
diff --git a/test/built-ins/Promise/resolve-non-obj-deferred.js b/test/built-ins/Promise/resolve-non-obj-deferred.js
index 2516dbd418932461ab50b0255266fc6a92014271..8e099a472356623e8a8791494da4830340181d89 100644
--- a/test/built-ins/Promise/resolve-non-obj-deferred.js
+++ b/test/built-ins/Promise/resolve-non-obj-deferred.js
@@ -13,6 +13,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var resolve;
diff --git a/test/built-ins/Promise/resolve-non-obj-immed.js b/test/built-ins/Promise/resolve-non-obj-immed.js
index 163a1938f9c2fdb87d2704933ea5fb061bc4473b..5f65561008e4db27e9c8115573927fa7fe34d20d 100644
--- a/test/built-ins/Promise/resolve-non-obj-immed.js
+++ b/test/built-ins/Promise/resolve-non-obj-immed.js
@@ -12,6 +12,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var promise = new Promise(function(resolve) {
diff --git a/test/built-ins/Promise/resolve-non-thenable-deferred.js b/test/built-ins/Promise/resolve-non-thenable-deferred.js
index a6ed8524208a0d49f18e0cc178c111f98a87ffee..d3b93474a70681ddc3491fc93f993b2f0d212e7c 100644
--- a/test/built-ins/Promise/resolve-non-thenable-deferred.js
+++ b/test/built-ins/Promise/resolve-non-thenable-deferred.js
@@ -18,6 +18,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var nonThenable = { then: null };
diff --git a/test/built-ins/Promise/resolve-non-thenable-immed.js b/test/built-ins/Promise/resolve-non-thenable-immed.js
index ae02361404f1d552594bc7a5277b9ad0932995ce..74161789f1d201b2341737b29babe5320952fd15 100644
--- a/test/built-ins/Promise/resolve-non-thenable-immed.js
+++ b/test/built-ins/Promise/resolve-non-thenable-immed.js
@@ -18,6 +18,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var nonThenable = { then: null };
diff --git a/test/built-ins/Promise/resolve-poisoned-then-deferred.js b/test/built-ins/Promise/resolve-poisoned-then-deferred.js
index 33c2b7846962adcffb2772eba4fc669884b1e51c..d043a5ddd45a4e040d34b289f2ac4ce7b1b1807c 100644
--- a/test/built-ins/Promise/resolve-poisoned-then-deferred.js
+++ b/test/built-ins/Promise/resolve-poisoned-then-deferred.js
@@ -14,6 +14,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/resolve-poisoned-then-immed.js b/test/built-ins/Promise/resolve-poisoned-then-immed.js
index ec806a2359e37515fdc1356782e02a9ccd843d07..90c678e49649d98de3f9276075a0587215980aa6 100644
--- a/test/built-ins/Promise/resolve-poisoned-then-immed.js
+++ b/test/built-ins/Promise/resolve-poisoned-then-immed.js
@@ -14,6 +14,7 @@ info: >
     25.4.1.3.2 Promise Resolve Functions
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/resolve-self.js b/test/built-ins/Promise/resolve-self.js
index 9425d42b5bc3cbefdf653d45405e041e630eee02..cd9d988ac110fde9158c85e13d3b2ef81304ac9a 100644
--- a/test/built-ins/Promise/resolve-self.js
+++ b/test/built-ins/Promise/resolve-self.js
@@ -14,6 +14,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var resolve;
diff --git a/test/built-ins/Promise/resolve-thenable-deferred.js b/test/built-ins/Promise/resolve-thenable-deferred.js
index 93dfab0e5368ef50dfea049a2025e1105bc9c9f9..cd572d1a84ea62b28c607230afd1333fdf1e3c0d 100644
--- a/test/built-ins/Promise/resolve-thenable-deferred.js
+++ b/test/built-ins/Promise/resolve-thenable-deferred.js
@@ -21,6 +21,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/resolve-thenable-immed.js b/test/built-ins/Promise/resolve-thenable-immed.js
index c39f9aff684e3b6b90403b106ed72ca8dfcbb9b8..f0412ed71a7a6dde9a29541a8b7f033db84f6015 100644
--- a/test/built-ins/Promise/resolve-thenable-immed.js
+++ b/test/built-ins/Promise/resolve-thenable-immed.js
@@ -20,6 +20,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/resolve/S25.4.4.5_A2.2_T1.js b/test/built-ins/Promise/resolve/S25.4.4.5_A2.2_T1.js
index 1ab3f41cd1fa5b5fa0ddbb9492bdde65c466b31f..2b471179fca6bcc1540e2b643cfe21fda43b8a46 100644
--- a/test/built-ins/Promise/resolve/S25.4.4.5_A2.2_T1.js
+++ b/test/built-ins/Promise/resolve/S25.4.4.5_A2.2_T1.js
@@ -5,6 +5,7 @@
 es6id: S25.4.4.5_A2.2_T1
 author: Sam Mikes
 description: Promise.resolve passes through an unsettled promise w/ same Constructor
+flags: [async]
 ---*/
 
 var resolveP1,
diff --git a/test/built-ins/Promise/resolve/S25.4.4.5_A2.3_T1.js b/test/built-ins/Promise/resolve/S25.4.4.5_A2.3_T1.js
index a54c21ede0d53924af24426aa7c0daaa86d82f83..3ea901fc83f4504d3310c6b945738091da9c7537 100644
--- a/test/built-ins/Promise/resolve/S25.4.4.5_A2.3_T1.js
+++ b/test/built-ins/Promise/resolve/S25.4.4.5_A2.3_T1.js
@@ -5,6 +5,7 @@
 es6id: S25.4.4.5_A2.3_T1
 author: Sam Mikes
 description: Promise.resolve passes through an unsettled promise w/ same Constructor
+flags: [async]
 ---*/
 
 var rejectP1,
diff --git a/test/built-ins/Promise/resolve/S25.4.4.5_A3.1_T1.js b/test/built-ins/Promise/resolve/S25.4.4.5_A3.1_T1.js
index 8fbc2befb1abde784dcc00327faaf48274892add..e76d00a3d9a6dfedc928ede513841a5b500403a1 100644
--- a/test/built-ins/Promise/resolve/S25.4.4.5_A3.1_T1.js
+++ b/test/built-ins/Promise/resolve/S25.4.4.5_A3.1_T1.js
@@ -8,6 +8,7 @@ es6id: S25.4.4.5_A3.1_T1
 author: Sam Mikes
 description: Promise.resolve delegates to foreign thenable
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/resolve/S25.4.4.5_A4.1_T1.js b/test/built-ins/Promise/resolve/S25.4.4.5_A4.1_T1.js
index aa11bf012508140676c6a7d22f3d36eb01851c58..f6dd291860179a608adc9a8ad55497f4845bc7b1 100644
--- a/test/built-ins/Promise/resolve/S25.4.4.5_A4.1_T1.js
+++ b/test/built-ins/Promise/resolve/S25.4.4.5_A4.1_T1.js
@@ -7,6 +7,7 @@ info: >
 es6id: S25.4.4.5_A3.1_T1
 author: Sam Mikes
 description: self-resolved Promise throws TypeError
+flags: [async]
 ---*/
 
 var resolveP,
diff --git a/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_1.js b/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_1.js
index aa00db6890e00bb60009e8c04bce824b08185866..bf0f2d6d283a9d9b8afb5f65df33b89ab93ceef5 100644
--- a/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_1.js
+++ b/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_1.js
@@ -8,6 +8,7 @@ es6id: S25.4.4.5
 author: Sam Mikes
 description: Promise.resolve delegates to foreign thenable
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_2.js b/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_2.js
index 074d0aaca1453dcb2392ff5768128033f4db7d37..b4c0c3ec6b29cbf8daf42bfc9cff0f67ebcb7c20 100644
--- a/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_2.js
+++ b/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_2.js
@@ -8,6 +8,7 @@ es6id: S25.4.4.5
 author: Sam Mikes
 description: Promise.resolve delegates to foreign thenable
 includes: [PromiseHelper.js]
+flags: [async]
 ---*/
 
 var sequence = [];
diff --git a/test/built-ins/Promise/resolve/arg-non-thenable.js b/test/built-ins/Promise/resolve/arg-non-thenable.js
index 2aa032efac4624c541ccc712ac2a942d6af50407..12d7beae67118c82b6c7c6c597255907e3ce2f73 100644
--- a/test/built-ins/Promise/resolve/arg-non-thenable.js
+++ b/test/built-ins/Promise/resolve/arg-non-thenable.js
@@ -18,6 +18,7 @@ info: >
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
     13. Return undefined.
+flags: [async]
 ---*/
 
 var nonThenable = {
diff --git a/test/built-ins/Promise/resolve/arg-poisoned-then.js b/test/built-ins/Promise/resolve/arg-poisoned-then.js
index 085e1455a767de649e6ff0fa82e2c32b4830ff52..4564314572d00a5c6284acef9e66f4af1abdd0bd 100644
--- a/test/built-ins/Promise/resolve/arg-poisoned-then.js
+++ b/test/built-ins/Promise/resolve/arg-poisoned-then.js
@@ -16,6 +16,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var poisonedThen = {};
diff --git a/test/built-ins/Promise/resolve/resolve-non-obj.js b/test/built-ins/Promise/resolve/resolve-non-obj.js
index 9a99e4d1f5ac4b25e1fb12a8c7e6d34f9cb9dd9a..5ec758cf37bda8a1582204bd8634c6396e4e31ec 100644
--- a/test/built-ins/Promise/resolve/resolve-non-obj.js
+++ b/test/built-ins/Promise/resolve/resolve-non-obj.js
@@ -13,6 +13,7 @@ info: >
     [...]
     7. If Type(resolution) is not Object, then
        a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 Promise.resolve(23).then(function(value) {
diff --git a/test/built-ins/Promise/resolve/resolve-non-thenable.js b/test/built-ins/Promise/resolve/resolve-non-thenable.js
index 446f0f9920006ed2c6cbd8e09e9be105f2553f16..3b6ed6b938d96a7337d65785c6a41a07f3039e2e 100644
--- a/test/built-ins/Promise/resolve/resolve-non-thenable.js
+++ b/test/built-ins/Promise/resolve/resolve-non-thenable.js
@@ -17,6 +17,7 @@ info: >
     10. Let thenAction be then.[[value]].
     11. If IsCallable(thenAction) is false, then
         a. Return FulfillPromise(promise, resolution).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/resolve/resolve-poisoned-then.js b/test/built-ins/Promise/resolve/resolve-poisoned-then.js
index 8ada16e3328e03b3508cc5256b206856aa1709fc..28983a300e8d9d4190a8227222e46513c7598ac8 100644
--- a/test/built-ins/Promise/resolve/resolve-poisoned-then.js
+++ b/test/built-ins/Promise/resolve/resolve-poisoned-then.js
@@ -14,6 +14,7 @@ info: >
     8. Let then be Get(resolution, "then").
     9. If then is an abrupt completion, then
        a. Return RejectPromise(promise, then.[[value]]).
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/test/built-ins/Promise/resolve/resolve-self.js b/test/built-ins/Promise/resolve/resolve-self.js
index a9b9b73c48e56499344f8f72905b8c1f0bed1891..dded4ecd96d32d7fc1debe840be8b84ce4475033 100644
--- a/test/built-ins/Promise/resolve/resolve-self.js
+++ b/test/built-ins/Promise/resolve/resolve-self.js
@@ -17,6 +17,7 @@ info: >
     6. If SameValue(resolution, promise) is true, then
        a. Let selfResolutionError be a newly created TypeError object.
        b. Return RejectPromise(promise, selfResolutionError).
+flags: [async]
 ---*/
 
 var resolve, reject;
diff --git a/test/built-ins/Promise/resolve/resolve-thenable.js b/test/built-ins/Promise/resolve/resolve-thenable.js
index 62b061b2ee78800cfd10cfc6a4dc73fbeca3092a..a3f81944c1cd5672f8a1d43552fc5d5799eedab8 100644
--- a/test/built-ins/Promise/resolve/resolve-thenable.js
+++ b/test/built-ins/Promise/resolve/resolve-thenable.js
@@ -19,6 +19,7 @@ info: >
         [...]
     12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob,
         «promise, resolution, thenAction»)
+flags: [async]
 ---*/
 
 var value = {};
diff --git a/tools/packaging/test262.py b/tools/packaging/test262.py
index 1192005fc9674c901933b312c3439e51efb21429..551d6d3e02d0e79d6995f8b049e165a6fe5da9cc 100755
--- a/tools/packaging/test262.py
+++ b/tools/packaging/test262.py
@@ -309,7 +309,7 @@ class TestCase(object):
     return 'raw' in self.testRecord
 
   def IsAsyncTest(self):
-    return '$DONE' in self.test
+    return 'async' in self.testRecord
 
   def GetIncludeList(self):
     if self.testRecord.get('includes'):