diff --git a/src/internal/await-block.js b/src/internal/await-block.js
index 3d8be35edc..e9c25ec370 100644
--- a/src/internal/await-block.js
+++ b/src/internal/await-block.js
@@ -1,5 +1,5 @@
import { assign, isPromise } from './utils.js';
-import { group_outros } from './transitions.js';
+import { check_outros, group_outros, on_outro } from './transitions.js';
import { flush } from '../internal/scheduler.js';
export function handlePromise(promise, info) {
@@ -18,10 +18,12 @@ export function handlePromise(promise, info) {
info.blocks.forEach((block, i) => {
if (i !== index && block) {
group_outros();
- block.o(() => {
+ on_outro(() => {
block.d(1);
info.blocks[i] = null;
});
+ block.o();
+ check_outros();
}
});
} else {
diff --git a/test/runtime/samples/await-with-components/Widget.html b/test/runtime/samples/await-with-components/Widget.html
new file mode 100644
index 0000000000..ec9e3471fe
--- /dev/null
+++ b/test/runtime/samples/await-with-components/Widget.html
@@ -0,0 +1,5 @@
+{value}
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/await-with-components/_config.js b/test/runtime/samples/await-with-components/_config.js
new file mode 100644
index 0000000000..ffef7441ff
--- /dev/null
+++ b/test/runtime/samples/await-with-components/_config.js
@@ -0,0 +1,29 @@
+export default {
+ async test({ assert, component, target }) {
+ let resolve, reject;
+ let promise = new Promise(ok => resolve = ok);
+
+ component.promise = promise;
+ assert.htmlEqual(target.innerHTML, 'Loading...');
+
+ resolve(42);
+ await promise;
+ assert.htmlEqual(target.innerHTML, '42');
+
+ promise = new Promise((ok, fail) => reject = fail);
+ component.promise = promise;
+ assert.htmlEqual(target.innerHTML, 'Loading...');
+
+ reject(99);
+ await promise.then(null, () => {});
+ assert.htmlEqual(target.innerHTML, '99');
+
+ promise = new Promise(ok => resolve = ok);
+ component.promise = promise;
+ assert.htmlEqual(target.innerHTML, 'Loading...');
+
+ resolve(1);
+ await promise;
+ assert.htmlEqual(target.innerHTML, '1');
+ }
+};
diff --git a/test/runtime/samples/await-with-components/main.html b/test/runtime/samples/await-with-components/main.html
new file mode 100644
index 0000000000..84894997e1
--- /dev/null
+++ b/test/runtime/samples/await-with-components/main.html
@@ -0,0 +1,12 @@
+{#await promise}
+
+{:then result}
+
+{:catch err}
+
+{/await}
+
+
\ No newline at end of file