| Index: tests/lib/async/catch_errors13_test.dart
|
| diff --git a/tests/lib/async/catch_errors13_test.dart b/tests/lib/async/catch_errors13_test.dart
|
| index 1e3a8dbaf2de5d91e42c67c004460b5a295cf96d..284dee91d98387ce0490e156fafe9c7fada44c94 100644
|
| --- a/tests/lib/async/catch_errors13_test.dart
|
| +++ b/tests/lib/async/catch_errors13_test.dart
|
| @@ -9,6 +9,8 @@ import 'catch_errors.dart';
|
|
|
| main() {
|
| asyncStart();
|
| + Completer done = new Completer();
|
| +
|
| var events = [];
|
| // Work around bug that makes runAsync use Timers. By invoking `runAsync` here
|
| // we make sure that asynchronous non-timer events are executed before any
|
| @@ -27,17 +29,24 @@ main() {
|
| runAsync(() { throw "runAsync"; });
|
| throw "delayed error";
|
| });
|
| - }).listen((x) { events.add(x); })
|
| - .asFuture()
|
| - .then((_) => events.add("inner done"))
|
| - .then((_) { throw "inner done throw"; });
|
| + }).listen((x) {
|
| + events.add(x);
|
| + if (x == "runAsync") {
|
| + throw "inner done throw";
|
| + }
|
| + });
|
| events.add("after inner");
|
| Timer.run(() { throw "timer outer"; });
|
| throw "inner throw";
|
| }).listen((x) {
|
| events.add(x);
|
| + if (x == "inner done throw") done.complete(true);
|
| },
|
| - onDone: () {
|
| + onDone: () { Expect.fail("Unexpected callback"); });
|
| +
|
| + done.future.whenComplete(() {
|
| + // Give callbacks time to run.
|
| + Timer.run(() {
|
| Expect.listEquals([
|
| "catch error entry",
|
| "catch error entry2",
|
| @@ -48,11 +57,11 @@ main() {
|
| "timer outer",
|
| "delayed error",
|
| "runAsync",
|
| - "inner done",
|
| "inner done throw"
|
| ],
|
| events);
|
| asyncEnd();
|
| });
|
| + });
|
| events.add("main exit");
|
| }
|
|
|