"use strict"; var traverse = require("../../traverse"); var t = require("../../types"); var traverser = { enter: function (node, parent, scope, context) { if (t.isFunction(node)) context.skip(); if (t.isAwaitExpression(node)) { node.type = "YieldExpression"; } } }; module.exports = function (node, callId) { node.async = false; node.generator = true; traverse(node, traverser); var call = t.callExpression(callId, [node]); if (t.isFunctionDeclaration(node)) { var declar = t.variableDeclaration("var", [ t.variableDeclarator(node.id, call) ]); declar._blockHoist = true; return declar; } else { return call; } };