| Index: lib/coreimpl/future_implementation.dart
|
| diff --git a/lib/coreimpl/future_implementation.dart b/lib/coreimpl/future_implementation.dart
|
| index 328c88964c6be89f44914b7bdddb32a12102758e..0272fb68fc47e447db303218b8c0a5cfa0e623ea 100644
|
| --- a/lib/coreimpl/future_implementation.dart
|
| +++ b/lib/coreimpl/future_implementation.dart
|
| @@ -171,20 +171,23 @@ class FutureImpl<T> implements Future<T> {
|
|
|
| Future transform(Function transformation) {
|
| final completer = new Completer();
|
| +
|
| handleException((e) {
|
| - completer.completeException(e, this.stackTrace);
|
| + completer.completeException(e, stackTrace);
|
| return true;
|
| });
|
| +
|
| then((v) {
|
| var transformed = null;
|
| try {
|
| transformed = transformation(v);
|
| - } catch (ex, stackTrace) {
|
| - completer.completeException(ex, stackTrace);
|
| + } catch (e, stackTrace) {
|
| + completer.completeException(e, stackTrace);
|
| return;
|
| }
|
| completer.complete(transformed);
|
| });
|
| +
|
| return completer.future;
|
| }
|
|
|
| @@ -210,6 +213,23 @@ class FutureImpl<T> implements Future<T> {
|
| });
|
| return completer.future;
|
| }
|
| +
|
| + Future transformException(transformation(Object exception)) {
|
| + final completer = new Completer();
|
| +
|
| + handleException((ex) {
|
| + try {
|
| + completer.complete(transformation(ex));
|
| + } catch (innerException, stackTrace) {
|
| + completer.completeException(innerException, stackTrace);
|
| + }
|
| + return true;
|
| + });
|
| +
|
| + then(completer.complete);
|
| +
|
| + return completer.future;
|
| + }
|
| }
|
|
|
| class CompleterImpl<T> implements Completer<T> {
|
|
|