 
   defp do_translate({:yield, _, [term]}, env) do
     Builder.yield_expression(
-      Translator.translate!(term, env)
+      Translator.translate!(term, env),
+      true
     )
   end
 

    )
  end

  defp do_translate({type, _, [{name, _, params}, [do: body]]}, env) when is_list(params) and type in [:generator, :function, :async]  do
    make_function(name, params, body, env, Keyword.new([{type, true}]))
  end

  defp do_translate({type, _, [[do: body]]}, env) when type in [:generator, :function, :async] do
    make_function(nil, [], body, env, Keyword.new([{type, true}]))
  end

  defp do_translate({type, _, params}, env) when type in [:generator, :function, :async] do
     [[do: body] | params] = Enum.reverse(params)
     make_function(nil, Enum.reverse(params), body, env, Keyword.new([{type, true}]))
  end

  alias ElixirScript.Translator
  alias ElixirScript.Translator.Identifier
  alias ElixirScript.ModuleSystems

  @js_function_types [:generator, :function, :async]

  @doc false
  def translate_js_function(name, params, env) do
