anchor.diff:  
     visitAwaitExpression(ast.AwaitExpression node) => (ek, sk) {
       return visit(node.expression)(ek, (expr) {
  +      if (currentStream != null) {
  +        expr = addTempDeclaration(expr);
  +        addStatement(make.methodInvocation(
  +            make.identifier(currentStream), 'pause', []));
  +      }
         addStatement(make.methodInvocation(expr, 'then',
             [_reifyAwaitContinuation(sk, ek),
              make.namedExpression('onError', ek.reify())]));
  
positive.code:               scanner.Keyword.keywords[node.loopVariable.keyword.lexeme],
                [make.variableDeclaration(
                     node.loopVariable.identifier.name,
                     make.propertyAccess(make.identifier(it), 'current'))]),
             node.body]);
      }
      stmt.statements.add(make.whileStatement(
          make.methodInvocation(make.identifier(it), 'moveNext', []),
          body));
      return visitBlock(stmt);
    }
  
    _translateForUpdaters(List<ast.Expression> exprs, ek, sk) {
  
negative.code:   String currentExceptionName;
    String currentStackTraceName;
  
    // Inside an asynchronous for loop, the translation maintains the name of
    // the current stream's StreamController.  When not inside an asynchronous
    // for loop, it is null.
    String currentStream;
  
    visit(ast.AstNode node) => node.accept(this);
  
    Map<String, int> nameCounters;
  