<h2 dir="auto">Bug Report</h2>
<p dir="auto"><strong>Current Behavior</strong><br>
When using @babel/plugin-transform-async-to-generator and @babel/plugin-transform-parameters together, awaiting a super method call results in a 'Maximum call stack size exceeded' due to a recursive infinite loop getting generated.</p>
<p dir="auto"><strong>Input Code</strong><br>
<a href="https://babeljs.io/en/repl#?babili=false&amp;browsers=&amp;build=&amp;builtIns=false&amp;spec=false&amp;loose=false&amp;code_lz=MYGwhgzhAEAa0FMAeAXBA7AJjAmgbwChppIBPdYaTAewGVqBbBFACwEt0BzACgEppCxYmADuYNimgQArgAcEAJwB0Nek1YcevANxFoAXwL6gA&amp;debug=false&amp;forceAllTransforms=false&amp;shippedProposals=false&amp;circleciRepo=&amp;evaluate=false&amp;fileSize=false&amp;timeTravel=false&amp;sourceType=module&amp;lineWrap=true&amp;presets=&amp;prettier=false&amp;targets=&amp;version=7.4.5&amp;externalPlugins=%40babel%2Fplugin-transform-async-to-generator%407.4.4%2C%40babel%2Fplugin-transform-parameters%407.4.4" rel="nofollow">https://babeljs.io/en/repl#?babili=false&amp;browsers=&amp;build=&amp;builtIns=false&amp;spec=false&amp;loose=false&amp;code_lz=MYGwhgzhAEAa0FMAeAXBA7AJjAmgbwChppIBPdYaTAewGVqBbBFACwEt0BzACgEppCxYmADuYNimgQArgAcEAJwB0Nek1YcevANxFoAXwL6gA&amp;debug=false&amp;forceAllTransforms=false&amp;shippedProposals=false&amp;circleciRepo=&amp;evaluate=false&amp;fileSize=false&amp;timeTravel=false&amp;sourceType=module&amp;lineWrap=true&amp;presets=&amp;prettier=false&amp;targets=&amp;version=7.4.5&amp;externalPlugins=%40babel%2Fplugin-transform-async-to-generator%407.4.4%2C%40babel%2Fplugin-transform-parameters%407.4.4</a></p>
<p dir="auto">Input:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="class X extends Y{
  async doSomething() {
    await super.doSomething();
  }
}"><pre class="notranslate"><span class="pl-k">class</span> <span class="pl-v">X</span> <span class="pl-k">extends</span> <span class="pl-v">Y</span><span class="pl-kos">{</span>
  <span class="pl-k">async</span> <span class="pl-en">doSomething</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">await</span> <span class="pl-smi">super</span><span class="pl-kos">.</span><span class="pl-en">doSomething</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">Relevant output:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="class X extends Y {
  doSomething() {
    var _superprop_callDoSomething = function () {
      return _superprop_callDoSomething(...arguments);
    };

    return _asyncToGenerator(function* () {
      yield _superprop_callDoSomething();
    })();
  }
}"><pre class="notranslate"><span class="pl-k">class</span> <span class="pl-v">X</span> <span class="pl-k">extends</span> <span class="pl-v">Y</span> <span class="pl-kos">{</span>
  <span class="pl-en">doSomething</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">var</span> <span class="pl-en">_superprop_callDoSomething</span> <span class="pl-c1">=</span> <span class="pl-k">function</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
      <span class="pl-k">return</span> <span class="pl-en">_superprop_callDoSomething</span><span class="pl-kos">(</span>...<span class="pl-smi">arguments</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span><span class="pl-kos">;</span>

    <span class="pl-k">return</span> <span class="pl-en">_asyncToGenerator</span><span class="pl-kos">(</span><span class="pl-k">function</span><span class="pl-c1">*</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
      <span class="pl-k">yield</span> <span class="pl-en">_superprop_callDoSomething</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">note the recursive <code class="notranslate">_superprop_callDoSomething</code></p>
<p dir="auto"><strong>Expected behavior/code</strong><br>
No recursive call.</p>
<p dir="auto"><strong>Babel Configuration (.babelrc, package.json, cli command)</strong></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="{
  &quot;plugins&quot;: [&quot;@babel/transform-async-to-generator&quot;, &quot;@babel/transform-parameters&quot;]
}"><pre class="notranslate"><span class="pl-kos">{</span>
  <span class="pl-s">"plugins"</span>: <span class="pl-kos">[</span><span class="pl-s">"@babel/transform-async-to-generator"</span><span class="pl-kos">,</span> <span class="pl-s">"@babel/transform-parameters"</span><span class="pl-kos">]</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto"><strong>Environment</strong></p>
<ul dir="auto">
<li>Babel version(s): 7.4.5</li>
<li>Node/npm version: Node 8/npm 6</li>
<li>OS: Mac OS</li>
<li>Monorepo: no</li>
<li>How you are using Babel: cli, online repl</li>
</ul>
<h2 dir="auto">Bug Report</h2>
<p dir="auto"><strong>Current Behavior</strong><br>
I have error <code class="notranslate">RangeError: Maximum call stack size exceeded</code> when I used a <code class="notranslate">super</code> in my async method</p>
<p dir="auto"><strong>Input Code</strong><br>
<a href="https://babeljs.io/repl/#?babili=false&amp;browsers=Chrome%20%3E%3D%2060%2C%20Safari%20%3E%3D%2011%2C%20iOS%20%3E%3D%2010.3%2C%20Firefox%20%3E%3D%2055%2C%20Edge%20%3E%3D%2016&amp;build=&amp;builtIns=false&amp;spec=false&amp;loose=false&amp;code_lz=MYGwhgzhAECyCeBhcVoFMAeAXNA7AJjAEKRrKQwDeAUNNJPLsNCAPZj4CiuWAllvAAUASmg06dLAAteEAHQB3NACMI_NNAC89BWH7RpsuWw4B1FWpwiA3LQmH5AJzQAHVo6xyIaLIlYBbFzBcIQdFC3U5YACgkOFbCWgIAFcXNEdjdi4efiF4uwBfagKgA&amp;debug=false&amp;forceAllTransforms=false&amp;shippedProposals=false&amp;circleciRepo=&amp;evaluate=false&amp;fileSize=false&amp;timeTravel=false&amp;sourceType=module&amp;lineWrap=true&amp;presets=env&amp;prettier=false&amp;targets=&amp;version=7.4.4&amp;externalPlugins=" rel="nofollow">REPL</a></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="class MyClass extends BaseClass {
  async loadEntity() {
    this.website = await this.loadWebsite();
    this.report.setCompany(this.website.company);
    super.loadEntity();
  }
}"><pre class="notranslate"><span class="pl-k">class</span> <span class="pl-v">MyClass</span> <span class="pl-k">extends</span> <span class="pl-v">BaseClass</span> <span class="pl-kos">{</span>
  <span class="pl-k">async</span> <span class="pl-en">loadEntity</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">website</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-en">loadWebsite</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">report</span><span class="pl-kos">.</span><span class="pl-en">setCompany</span><span class="pl-kos">(</span><span class="pl-smi">this</span><span class="pl-kos">.</span><span class="pl-c1">website</span><span class="pl-kos">.</span><span class="pl-c1">company</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-smi">super</span><span class="pl-kos">.</span><span class="pl-en">loadEntity</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto"><strong>Expected behavior/code</strong><br>
It should work without looping</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="class MyClass extends BaseClass {
  loadEntity() {
    var _this = this,
        _superprop_callLoadEntity = function _superprop_callLoadEntity() {
      return _superprop_callLoadEntity(...arguments); // &lt;= HERE I HAVE LOOPING :(
    };

    return _asyncToGenerator(function* () {
      _this.website = yield _this.loadWebsite();

      _this.report.setCompany(_this.website.company);

      _superprop_callLoadEntity();
    })();
  }

}"><pre class="notranslate"><span class="pl-k">class</span> <span class="pl-v">MyClass</span> <span class="pl-k">extends</span> <span class="pl-v">BaseClass</span> <span class="pl-kos">{</span>
  <span class="pl-en">loadEntity</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">var</span> <span class="pl-s1">_this</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">,</span>
        <span class="pl-en">_superprop_callLoadEntity</span> <span class="pl-c1">=</span> <span class="pl-k">function</span> <span class="pl-en">_superprop_callLoadEntity</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
      <span class="pl-k">return</span> <span class="pl-en">_superprop_callLoadEntity</span><span class="pl-kos">(</span>...<span class="pl-smi">arguments</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-c">// &lt;= HERE I HAVE LOOPING :(</span>
    <span class="pl-kos">}</span><span class="pl-kos">;</span>

    <span class="pl-k">return</span> <span class="pl-en">_asyncToGenerator</span><span class="pl-kos">(</span><span class="pl-k">function</span><span class="pl-c1">*</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
      <span class="pl-s1">_this</span><span class="pl-kos">.</span><span class="pl-c1">website</span> <span class="pl-c1">=</span> <span class="pl-k">yield</span> <span class="pl-s1">_this</span><span class="pl-kos">.</span><span class="pl-en">loadWebsite</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

      <span class="pl-s1">_this</span><span class="pl-kos">.</span><span class="pl-c1">report</span><span class="pl-kos">.</span><span class="pl-en">setCompany</span><span class="pl-kos">(</span><span class="pl-s1">_this</span><span class="pl-kos">.</span><span class="pl-c1">website</span><span class="pl-kos">.</span><span class="pl-c1">company</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

      <span class="pl-en">_superprop_callLoadEntity</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>

<span class="pl-kos">}</span></pre></div>