<blockquote>
<p dir="auto">Issue originally made by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ltrlg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ltrlg">@Ltrlg</a></p>
</blockquote>
<h3 dir="auto">Bug information</h3>
<ul dir="auto">
<li><strong>Babel version:</strong> 6.4.0</li>
<li><strong>Node version:</strong> 5.3.0</li>
<li><strong>npm version:</strong> 3.3.12</li>
</ul>
<h3 dir="auto">Options</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="--plugins transform-async-to-generator"><pre class="notranslate"><code class="notranslate">--plugins transform-async-to-generator
</code></pre></div>
<h3 dir="auto">Input code</h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="class C { async a() {
        let t = this;
        let f = () =&gt; this;
    } }"><pre class="notranslate"><span class="pl-k">class</span> <span class="pl-v">C</span> <span class="pl-kos">{</span> <span class="pl-k">async</span> <span class="pl-en">a</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
        <span class="pl-k">let</span> <span class="pl-s1">t</span> <span class="pl-c1">=</span> <span class="pl-smi">this</span><span class="pl-kos">;</span>
        <span class="pl-k">let</span> <span class="pl-en">f</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi">this</span><span class="pl-kos">;</span>
    <span class="pl-kos">}</span> <span class="pl-kos">}</span></pre></div>
<h3 dir="auto">Description</h3>
<p dir="auto">Babel transforms the given minimal example by replacing the first <code class="notranslate">this</code> by a <code class="notranslate">_this</code> copy, but not the second one.</p>
<h2 dir="auto">Bug Report</h2>
<p dir="auto"><strong>Current Behavior</strong><br>
If relying on external browserslist config, "defaults" in that file resolves to empty set, which enables all transforms.</p>
<p dir="auto"><strong>Expected behavior/code</strong><br>
"defaults" should resolve normally. In the example below, many transforms should be disabled.</p>
<p dir="auto"><strong>Babel Configuration (babel.config.js, .babelrc, package.json#babel, cli command, .eslintrc)</strong></p>
<ul dir="auto">
<li>Filename: <code class="notranslate">babel.config.js</code></li>
</ul>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="module.exports = {
  presets: [
    ['@vue/cli-plugin-babel/preset', {debug: true}],
  ]
}"><pre class="notranslate"><span class="pl-smi">module</span><span class="pl-kos">.</span><span class="pl-c1">exports</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span>
  <span class="pl-c1">presets</span>: <span class="pl-kos">[</span>
    <span class="pl-kos">[</span><span class="pl-s">'@vue/cli-plugin-babel/preset'</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">debug</span>: <span class="pl-c1">true</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>
<ul dir="auto">
<li>Filename: <code class="notranslate">.browserslistrc</code></li>
</ul>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="defaults and last 4 years"><pre class="notranslate"><code class="notranslate">defaults and last 4 years
</code></pre></div>
<p dir="auto"><strong>Environment</strong></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="  System:
    OS: Linux 5.3 Debian GNU/Linux bullseye/sid
  Binaries:
    Node: 10.17.0 - /usr/bin/node
    npm: 6.13.0 - /usr/local/bin/npm
  npmPackages:
    babel-eslint: ^10.0.1 =&gt; 10.0.3
    eslint: ^6.7.0 =&gt; 6.7.0"><pre class="notranslate"><code class="notranslate">  System:
    OS: Linux 5.3 Debian GNU/Linux bullseye/sid
  Binaries:
    Node: 10.17.0 - /usr/bin/node
    npm: 6.13.0 - /usr/local/bin/npm
  npmPackages:
    babel-eslint: ^10.0.1 =&gt; 10.0.3
    eslint: ^6.7.0 =&gt; 6.7.0
</code></pre></div>
<p dir="auto"><strong>Additional context/Screenshots</strong><br>
This is broken because of legacy support:</p>
<p dir="auto"></p><div class="Box Box--condensed my-2">
  <div class="Box-header f6">
    <p class="mb-0 text-bold">
      <a href="https://github.com/babel/babel/blob/bffa415b83e7cef21cb43b05cc05fc93cf0ac782/packages/babel-preset-env/src/targets-parser.js#L205-L214">babel/packages/babel-preset-env/src/targets-parser.js</a>
    </p>
    <p class="mb-0 color-fg-muted">
        Lines 205 to 214
      in
      <a data-pjax="true" class="commit-tease-sha" href="/babel/babel/commit/bffa415b83e7cef21cb43b05cc05fc93cf0ac782">bffa415</a>
    </p>
  </div>
  <div itemprop="text" class="Box-body p-0 blob-wrapper blob-wrapper-embedded data">
    <table class="highlight tab-size mb-0 js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">

        <tbody><tr class="border-0">
          <td id="L205" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="205"></td>
          <td id="LC205" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">// If no targets are passed, we need to overwrite browserslist's defaults</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L206" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="206"></td>
          <td id="LC206" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">// so that we enable all transforms (acting like the now deprecated</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L207" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="207"></td>
          <td id="LC207" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">// preset-latest).</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L208" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="208"></td>
          <td id="LC208" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">//</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L209" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="209"></td>
          <td id="LC209" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">// Note, if browserslist resolves the config (ex. package.json), then usage</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L210" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="210"></td>
          <td id="LC210" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">// of `defaults` in queries will be different since we don't want to break</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L211" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="211"></td>
          <td id="LC211" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-c">// the behavior of "no targets is the same as preset-latest".</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L212" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="212"></td>
          <td id="LC212" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-c1">!</span><span class="pl-s1">hasTargets</span><span class="pl-kos">)</span> <span class="pl-kos">{</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L213" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="213"></td>
          <td id="LC213" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line">   <span class="pl-s1">browserslist</span><span class="pl-kos">.</span><span class="pl-c1">defaults</span> <span class="pl-c1">=</span> <span class="pl-s1">objectToBrowserslist</span><span class="pl-kos">(</span><span class="pl-s1">targets</span><span class="pl-kos">)</span><span class="pl-kos">;</span> </td>
        </tr>

        <tr class="border-0">
          <td id="L214" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="214"></td>
          <td id="LC214" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-kos">}</span> </td>
        </tr>
    </tbody></table>
  </div>
</div>
<p></p>
<p dir="auto">This causes defaults to be empty (since <code class="notranslate">!hasTargets</code>) and thus the result is empty. <g-emoji class="g-emoji" alias="cry" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f622.png">😢</g-emoji></p>