title: Flutter stack_trace makes `catch` keyword fail to work
body: <p>Very simple example:</p>
  <pre><code>void main() async {
    try {
      await g();
    } catch (e) {
      print('catch e=$e');
    }
  }
  
  Future&lt;void&gt; g() {
    throw Exception('fake error');
  }
  </code></pre>
  <p>As expected, the output is <code>catch e=Exception: fake error</code>.</p>
  <p>However, by wrapping <code>g</code> with <code>Chain.capture</code> as follows:</p>
  <pre><code>Future&lt;void&gt; g() {
    return Chain.capture(() async {
      throw Exception('fake error');
    });
  }
  </code></pre>
  <p><strong>Our catch no longer works!</strong> See below:</p>
  <pre><code>[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: Exception: fake error
  package:yplusplus/main.dart 60:5              g.&lt;fn&gt;
  package:yplusplus/main.dart 59:24             g.&lt;fn&gt;
  package:stack_trace/src/chain.dart 94:24      Chain.capture.&lt;fn&gt;
  dart:async/zone.dart 1354:13                  _rootRun
  dart:async/zone.dart 1258:19                  _CustomZone.run
  dart:async/zone.dart 1789:10                  _runZoned
  dart:async/zone.dart 1711:10                  runZoned
  package:stack_trace/src/chain.dart 92:12      Chain.capture
  package:yplusplus/main.dart 59:16             g
  package:yplusplus/main.dart 52:11             main
  dart:ui/hooks.dart 142:25                     _runMainZoned.&lt;fn&gt;.&lt;fn&gt;
  dart:async/zone.dart 1354:13                  _rootRun
  dart:async/zone.dart 1258:19                  _CustomZone.run
  dart:async/zone.dart 1789:10                  _runZoned
  dart:async/zone.dart 1777:12                  runZonedGuarded
  dart:ui/hooks.dart 138:5                      _runMainZoned.&lt;fn&gt;
  dart:isola&lt;…&gt;
  </code></pre>
  <p>This is very counter-intuitive. I wonder how can I solve this problem? In other words, I want to have the full stack trace (so I use capture), but at the same time, I want <code>catch</code> to work!</p>
  <p>Thanks for any suggestions!</p>