anchor.diff:          new js.VariableDeclarationList(variables);
   
       return finishFunction(node.params, rewrittenBody, variableDeclarations);
  +  }
  +
  +  @override
  +  js.Expression visitFun(js.Fun node) {
  +    if (node.asyncModifier.isAsync || node.asyncModifier.isYielding) {
  +      // The translation does not handle nested functions that are generators
  +      // or asynchronous.  These functions should only be ones that are
  +      // introduced by JS foreign code from our own libraries.
  +      reporter.internalError(spannable,
  +          'Nested function is a generator or asynchronous.');
  +    }
  +    return node;
     }
   
     @override
  
positive.code:     return result.reversed.toList();
    }
  
    /// See the comments of [visitFun] for more explanation.
    void visitTry(js.Try node) {
      if (!shouldTransform(node)) {
        js.Block body = translateInBlock(node.body);
  
negative.code: 
    /// An await is translated to an [awaitStatement].
    ///
    /// See the comments of [rewriteFunction] for an example.
    @override
    js.Expression visitAwait(js.Await node) {
      assert(isAsync || isAsyncStar);
  