| Index: tests/lib_strong/async/dart2js_uncaught_error_test.dart
 | 
| diff --git a/tests/lib_strong/async/dart2js_uncaught_error_test.dart b/tests/lib_strong/async/dart2js_uncaught_error_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..6c7f12d7e1068a29bde3baf38a01ea070cde2347
 | 
| --- /dev/null
 | 
| +++ b/tests/lib_strong/async/dart2js_uncaught_error_test.dart
 | 
| @@ -0,0 +1,46 @@
 | 
| +// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 | 
| +// for details. All rights reserved. Use of this source code is governed by a
 | 
| +// BSD-style license that can be found in the LICENSE file.
 | 
| +
 | 
| +import "dart:async";
 | 
| +import "dart:js";
 | 
| +import "dart:collection" show Queue;
 | 
| +import "package:expect/expect.dart";
 | 
| +import "package:async_helper/async_helper.dart";
 | 
| +
 | 
| +var errors = new Queue();
 | 
| +int ctr = 0;
 | 
| +
 | 
| +main() {
 | 
| +  print("STARTED");
 | 
| +  asyncStart();
 | 
| +
 | 
| +  void errorHandler(self, message, url, line, [column, error]) {
 | 
| +    print(">> $message / $ctr");
 | 
| +    var expect = errors.removeFirst();
 | 
| +    if (ctr == 2) {
 | 
| +      asyncEnd();
 | 
| +      print("DONE");
 | 
| +    }
 | 
| +    Expect.equals(expect[0].toString(), message);
 | 
| +    Expect.equals(expect[1].toString(), error["stack"].toString());
 | 
| +  }
 | 
| +  context["onerror"] = new JsFunction.withThis(errorHandler);
 | 
| +
 | 
| +  void throwit() {
 | 
| +    var err = ++ctr;
 | 
| +    try {
 | 
| +      throw err;
 | 
| +    } catch (e, s) {
 | 
| +      errors.add([e, s]);
 | 
| +      rethrow;
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
| +  () async {
 | 
| +    () async {
 | 
| +      throwit();
 | 
| +    }();
 | 
| +    throwit();
 | 
| +  }();
 | 
| +}
 | 
| 
 |