| Index: tests/lib_strong/async/stream_event_transformed_test.dart
 | 
| diff --git a/tests/lib_strong/async/stream_event_transformed_test.dart b/tests/lib_strong/async/stream_event_transformed_test.dart
 | 
| index 62d1967bacd40abbc94b2557d6cdac0f52c6463c..6e9a38035a6ea54c487f4246a5ee3ca09f2d96cc 100644
 | 
| --- a/tests/lib_strong/async/stream_event_transformed_test.dart
 | 
| +++ b/tests/lib_strong/async/stream_event_transformed_test.dart
 | 
| @@ -7,7 +7,6 @@ import 'package:async_helper/async_helper.dart';
 | 
|  import 'dart:async';
 | 
|  import 'event_helper.dart';
 | 
|  
 | 
| -
 | 
|  class DecrementingTransformerSink implements EventSink {
 | 
|    final outSink;
 | 
|    DecrementingTransformerSink(this.outSink);
 | 
| @@ -22,17 +21,33 @@ class FutureWaitingTransformerSink implements EventSink {
 | 
|    final closeFuture;
 | 
|    FutureWaitingTransformerSink(this.outSink, this.closeFuture);
 | 
|  
 | 
| -  void add(Future future) { future.then(outSink.add); }
 | 
| -  void addError(Future e, [st]) { e.then((val) { outSink.addError(val, st); }); }
 | 
| -  void close() { closeFuture.whenComplete(outSink.close); }
 | 
| +  void add(Future future) {
 | 
| +    future.then(outSink.add);
 | 
| +  }
 | 
| +
 | 
| +  void addError(Future e, [st]) {
 | 
| +    e.then((val) {
 | 
| +      outSink.addError(val, st);
 | 
| +    });
 | 
| +  }
 | 
| +
 | 
| +  void close() {
 | 
| +    closeFuture.whenComplete(outSink.close);
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  class ZoneTransformerSink implements EventSink {
 | 
|    final outSink;
 | 
|    ZoneTransformerSink(this.outSink);
 | 
|  
 | 
| -  void add(_) { outSink.add(Zone.current); }
 | 
| -  void addError(_, [st]) { outSink.add(Zone.current); }
 | 
| +  void add(_) {
 | 
| +    outSink.add(Zone.current);
 | 
| +  }
 | 
| +
 | 
| +  void addError(_, [st]) {
 | 
| +    outSink.add(Zone.current);
 | 
| +  }
 | 
| +
 | 
|    void close() {
 | 
|      outSink.add(Zone.current);
 | 
|      outSink.close();
 | 
| @@ -43,9 +58,17 @@ class TypeChangingSink implements EventSink<int> {
 | 
|    final EventSink<String> outSink;
 | 
|    TypeChangingSink(this.outSink);
 | 
|  
 | 
| -  void add(int data) { outSink.add(data.toString()); }
 | 
| -  void addError(error, [st]) { outSink.addError(error, st); }
 | 
| -  void close() { outSink.close(); }
 | 
| +  void add(int data) {
 | 
| +    outSink.add(data.toString());
 | 
| +  }
 | 
| +
 | 
| +  void addError(error, [st]) {
 | 
| +    outSink.addError(error, st);
 | 
| +  }
 | 
| +
 | 
| +  void close() {
 | 
| +    outSink.close();
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  class SinkTransformer<S, T> implements StreamTransformer<S, T> {
 | 
| @@ -85,13 +108,13 @@ main() {
 | 
|      // similar to a map.
 | 
|      asyncStart();
 | 
|      new Stream.fromIterable([1, 2, 3])
 | 
| -      .transform(
 | 
| -          new SinkTransformer((sink) => new DecrementingTransformerSink(sink)))
 | 
| -      .toList()
 | 
| -      .then((list) {
 | 
| -        Expect.listEquals([0, 1, 2], list);
 | 
| -        asyncEnd();
 | 
| -      });
 | 
| +        .transform(new SinkTransformer(
 | 
| +            (sink) => new DecrementingTransformerSink(sink)))
 | 
| +        .toList()
 | 
| +        .then((list) {
 | 
| +      Expect.listEquals([0, 1, 2], list);
 | 
| +      asyncEnd();
 | 
| +    });
 | 
|    }
 | 
|  
 | 
|    {
 | 
| @@ -107,17 +130,17 @@ main() {
 | 
|        controller.close();
 | 
|      });
 | 
|      controller.stream
 | 
| -      .transform(
 | 
| -          new SinkTransformer((sink) => new DecrementingTransformerSink(sink)))
 | 
| -      .listen((data) {
 | 
| -        events.add(data);
 | 
| -      }, onError: (e, st) {
 | 
| -        events.add(e);
 | 
| -        events.add(st);
 | 
| -      }, onDone: () {
 | 
| -        Expect.listEquals([498, 41, stackTrace], events);
 | 
| -        asyncEnd();
 | 
| -      });
 | 
| +        .transform(new SinkTransformer(
 | 
| +            (sink) => new DecrementingTransformerSink(sink)))
 | 
| +        .listen((data) {
 | 
| +      events.add(data);
 | 
| +    }, onError: (e, st) {
 | 
| +      events.add(e);
 | 
| +      events.add(st);
 | 
| +    }, onDone: () {
 | 
| +      Expect.listEquals([498, 41, stackTrace], events);
 | 
| +      asyncEnd();
 | 
| +    });
 | 
|    }
 | 
|  
 | 
|    {
 | 
| @@ -137,18 +160,17 @@ main() {
 | 
|        controller.close();
 | 
|      });
 | 
|      controller.stream
 | 
| -      .transform(
 | 
| -        new SinkTransformer((sink) =>
 | 
| +        .transform(new SinkTransformer((sink) =>
 | 
|              new FutureWaitingTransformerSink(sink, closeCompleter.future)))
 | 
| -      .listen((data) {
 | 
| -        events.add(data);
 | 
| -      }, onError: (e, st) {
 | 
| -        events.add(e);
 | 
| -        events.add(st);
 | 
| -      }, onDone: () {
 | 
| -        Expect.listEquals(["error2", stackTrace, "future3", "future1"], events);
 | 
| -        asyncEnd();
 | 
| -      });
 | 
| +        .listen((data) {
 | 
| +      events.add(data);
 | 
| +    }, onError: (e, st) {
 | 
| +      events.add(e);
 | 
| +      events.add(st);
 | 
| +    }, onDone: () {
 | 
| +      Expect.listEquals(["error2", stackTrace, "future3", "future1"], events);
 | 
| +      asyncEnd();
 | 
| +    });
 | 
|      Timer.run(() {
 | 
|        completer2.complete("error2");
 | 
|        Timer.run(() {
 | 
| @@ -179,23 +201,28 @@ main() {
 | 
|        controller.close();
 | 
|      });
 | 
|      var subscription;
 | 
| -    completer1.future.then((_) { Expect.isTrue(subscription.isPaused); });
 | 
| -    completer2.future.then((_) { Expect.isTrue(subscription.isPaused); });
 | 
| -    completer3.future.then((_) { Expect.isTrue(subscription.isPaused); });
 | 
| +    completer1.future.then((_) {
 | 
| +      Expect.isTrue(subscription.isPaused);
 | 
| +    });
 | 
| +    completer2.future.then((_) {
 | 
| +      Expect.isTrue(subscription.isPaused);
 | 
| +    });
 | 
| +    completer3.future.then((_) {
 | 
| +      Expect.isTrue(subscription.isPaused);
 | 
| +    });
 | 
|      subscription = controller.stream
 | 
| -      .transform(
 | 
| -        new SinkTransformer((sink) =>
 | 
| +        .transform(new SinkTransformer((sink) =>
 | 
|              new FutureWaitingTransformerSink(sink, closeCompleter.future)))
 | 
| -      .listen((data) {
 | 
| -        Expect.isFalse(subscription.isPaused);
 | 
| -        events.add(data);
 | 
| -      }, onError: (e, st) {
 | 
| -        events.add(e);
 | 
| -        events.add(st);
 | 
| -      }, onDone: () {
 | 
| -        Expect.listEquals(["error2", stackTrace, "future3", "future1"], events);
 | 
| -        asyncEnd();
 | 
| -      });
 | 
| +        .listen((data) {
 | 
| +      Expect.isFalse(subscription.isPaused);
 | 
| +      events.add(data);
 | 
| +    }, onError: (e, st) {
 | 
| +      events.add(e);
 | 
| +      events.add(st);
 | 
| +    }, onDone: () {
 | 
| +      Expect.listEquals(["error2", stackTrace, "future3", "future1"], events);
 | 
| +      asyncEnd();
 | 
| +    });
 | 
|      Timer.run(() {
 | 
|        subscription.pause();
 | 
|        completer2.complete("error2");
 | 
| @@ -242,18 +269,17 @@ main() {
 | 
|      int errorCount = 0;
 | 
|      runZoned(() {
 | 
|        controller.stream
 | 
| -        .transform(
 | 
| -          new SinkTransformer((sink) =>
 | 
| +          .transform(new SinkTransformer((sink) =>
 | 
|                new FutureWaitingTransformerSink(sink, closeCompleter.future)))
 | 
| -        .listen((data) {
 | 
| -          events.add(data);
 | 
| -        }, onError: (e, st) {
 | 
| -          events.add(e);
 | 
| -          events.add(st);
 | 
| -        }, onDone: () {
 | 
| -          Expect.listEquals([], events);
 | 
| -          streamIsDone = true;
 | 
| -        });
 | 
| +          .listen((data) {
 | 
| +        events.add(data);
 | 
| +      }, onError: (e, st) {
 | 
| +        events.add(e);
 | 
| +        events.add(st);
 | 
| +      }, onDone: () {
 | 
| +        Expect.listEquals([], events);
 | 
| +        streamIsDone = true;
 | 
| +      });
 | 
|      }, onError: (e) {
 | 
|        Expect.isTrue(e is StateError);
 | 
|        errorCount++;
 | 
| @@ -263,9 +289,15 @@ main() {
 | 
|        Expect.isTrue(streamIsDone);
 | 
|        // Each of the delayed completions should trigger an unhandled error
 | 
|        // in the zone the stream was listened to.
 | 
| -      Timer.run(() { completer1.complete(499); });
 | 
| -      Timer.run(() { completer2.complete(42); });
 | 
| -      Timer.run(() { completer3.complete(99); });
 | 
| +      Timer.run(() {
 | 
| +        completer1.complete(499);
 | 
| +      });
 | 
| +      Timer.run(() {
 | 
| +        completer2.complete(42);
 | 
| +      });
 | 
| +      Timer.run(() {
 | 
| +        completer3.complete(99);
 | 
| +      });
 | 
|        delayCycles(() {
 | 
|          Expect.equals(3, errorCount);
 | 
|          asyncEnd();
 | 
| @@ -289,12 +321,12 @@ main() {
 | 
|      var stream = controller.stream.transform(
 | 
|          new SinkTransformer((sink) => new ZoneTransformerSink(sink)));
 | 
|      zone.run(() {
 | 
| -        stream.listen((data) {
 | 
| -          events.add(data);
 | 
| -        }, onDone: () {
 | 
| -          Expect.listEquals([zone, zone, zone], events);
 | 
| -          delayCycles(asyncEnd, 3);
 | 
| -        });
 | 
| +      stream.listen((data) {
 | 
| +        events.add(data);
 | 
| +      }, onDone: () {
 | 
| +        Expect.listEquals([zone, zone, zone], events);
 | 
| +        delayCycles(asyncEnd, 3);
 | 
| +      });
 | 
|      });
 | 
|    }
 | 
|  
 | 
| @@ -302,12 +334,12 @@ main() {
 | 
|      // Just make sure that the generic types are correct everywhere.
 | 
|      asyncStart();
 | 
|      new Stream.fromIterable([1, 2, 3])
 | 
| -      .transform(new SinkTransformer<int, String>(
 | 
| -          (sink) => new TypeChangingSink(sink)))
 | 
| -      .toList()
 | 
| -      .then((list) {
 | 
| -        Expect.listEquals(["1", "2", "3"], list);
 | 
| -        asyncEnd();
 | 
| -      });
 | 
| +        .transform(new SinkTransformer<int, String>(
 | 
| +            (sink) => new TypeChangingSink(sink)))
 | 
| +        .toList()
 | 
| +        .then((list) {
 | 
| +      Expect.listEquals(["1", "2", "3"], list);
 | 
| +      asyncEnd();
 | 
| +    });
 | 
|    }
 | 
|  }
 | 
| 
 |