Avoid timeouts in stack_trace's chain_test.

R=rnystrom@google.com
BUG=18142

Review URL: https://codereview.chromium.org//232783008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/stack_trace@34940 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/stack_trace/test/chain_test.dart b/pkgs/stack_trace/test/chain_test.dart
index 683544f..3347deb 100644
--- a/pkgs/stack_trace/test/chain_test.dart
+++ b/pkgs/stack_trace/test/chain_test.dart
@@ -92,16 +92,20 @@
         inMicrotask(() => throw 'first error');
         inPeriodicTimer(() => throw 'second error');
       }, onError: (error, chain) {
-        if (first) {
-          expect(error, equals('first error'));
-          expect(chain.traces[1].frames,
-              contains(frameMember(startsWith('inMicrotask'))));
-          first = false;
-        } else {
-          expect(error, equals('second error'));
-          expect(chain.traces[1].frames,
-              contains(frameMember(startsWith('inPeriodicTimer'))));
-          completer.complete();
+        try {
+          if (first) {
+            expect(error, equals('first error'));
+            expect(chain.traces[1].frames,
+                contains(frameMember(startsWith('inMicrotask'))));
+            first = false;
+          } else {
+            expect(error, equals('second error'));
+            expect(chain.traces[1].frames,
+                contains(frameMember(startsWith('inPeriodicTimer'))));
+            completer.complete();
+          }
+        } catch (error, stackTrace) {
+          completer.completeError(error, stackTrace);
         }
       });
 
@@ -121,11 +125,15 @@
           throw error;
         });
       }, onError: (error, chain) {
-        expect(error, equals('error'));
-        expect(chain, new isInstanceOf<Chain>());
-        expect(chain.traces[1].frames,
-            contains(frameMember(startsWith('inMicrotask'))));
-        completer.complete();
+        try {
+          expect(error, equals('error'));
+          expect(chain, new isInstanceOf<Chain>());
+          expect(chain.traces[1].frames,
+              contains(frameMember(startsWith('inMicrotask'))));
+          completer.complete();
+        } catch (error, stackTrace) {
+          completer.completeError(error, stackTrace);
+        }
       });
 
       return completer.future;
@@ -138,11 +146,15 @@
     runZoned(() {
       Chain.capture(() => inMicrotask(() => throw 'error'));
     }, onError: (error, chain) {
-      expect(error, equals('error'));
-      expect(chain, new isInstanceOf<Chain>());
-      expect(chain.traces[1].frames,
-          contains(frameMember(startsWith('inMicrotask'))));
-      completer.complete();
+      try {
+        expect(error, equals('error'));
+        expect(chain, new isInstanceOf<Chain>());
+        expect(chain.traces[1].frames,
+            contains(frameMember(startsWith('inMicrotask'))));
+        completer.complete();
+      } catch (error, stackTrace) {
+        completer.completeError(error, stackTrace);
+      }
     });
 
     return completer.future;