<p dir="auto">demo: <a href="https://babeljs.io/repl/#?babili=false&amp;evaluate=true&amp;lineWrap=false&amp;presets=es2015%2Cstage-0&amp;code=async%20function%20foo()%7B%0A%20%20%0A%7D%0A%0Aconsole.log(foo.constructor)%3B&amp;experimental=true&amp;loose=false&amp;spec=false&amp;playground=true" rel="nofollow">https://babeljs.io/repl/#?babili=false&amp;evaluate=true&amp;lineWrap=false&amp;presets=es2015%2Cstage-0&amp;code=async%20function%20foo()%7B%0A%20%20%0A%7D%0A%0Aconsole.log(foo.constructor)%3B&amp;experimental=true&amp;loose=false&amp;spec=false&amp;playground=true</a></p>
<p dir="auto">it outputs 'Function'</p>
<p dir="auto">The spec <a href="https://tc39.github.io/ecmascript-asyncawait/#async-function-constructor-arguments" rel="nofollow">https://tc39.github.io/ecmascript-asyncawait/#async-function-constructor-arguments</a> seems to tell about a AsyncFunction type</p>
<p dir="auto">This would be really nice for larger applications that aren't libraries, where they could still use the full, globally polluting polyfill, but the helpers wouldn't be duplicated across several modules. It would make the compiled code faster to load, and a lot smaller overall. These benefits are nice for both Node applications and web applications, where the deduplication would make programs significantly smaller. As for the core-js aliasing, it could just require the module at the top of every file that needs a feature from it, which doesn't add a lot of size overhead to the files.</p>