anchor.diff:  
         var completer = new Completer();
         var list = [];
  -      // TODO(jmesserly): use tear off. For now this is a workaround for:
  -      // https://github.com/dart-lang/dev_compiler/issues/269
  -      f().listen((x) => list.add(x),
  +      f().listen(list.add,
             onError: (v) => list.add("$v"), onDone: completer.complete);
         return completer.future.whenComplete(() {
           expect(list, equals([1, "2"]));
  
positive.code:       return expectList(f(), [1, 2]);
      });
  
      // TODO(jmesserly): restore this when we fix
      // https://github.com/dart-lang/dev_compiler/issues/263
      /*test("switch-case", () {
        f(v) async* {
          switch (v) {
            case 0:
  
negative.code:       });
      });
  
      test("regression-fugl/fisk", () {
        var res = [];
        fisk() async* {
          res.add("+fisk");
          try {
            for (int i = 0; i < 2; i++) {
              yield await new Future.microtask(() => i);
            }
          } finally {
            res.add("-fisk");
          }
        }
  
        fugl(int count) async {
          res.add("fisk $count");
          try {
            await for(int i in fisk().take(count)) res.add(i);
          } finally {
            res.add("done");
          }
        }
  
        return fugl(3).whenComplete(() => fugl(2))
                      .whenComplete(() => fugl(1))
                      .whenComplete(() {
          expect(res, ["fisk 3", "+fisk", 0, 1, "-fisk", "done",
                       "fisk 2", "+fisk", 0, 1, "-fisk", "done",
                       "fisk 1", "+fisk", 0, "-fisk", "done", ]);
        });
      });
    });
  
    group("pausing", () {
  