Babel compiles whatever you tell it to, and each piece of syntax is a separate plugin.
For `babel-preset-env` specifically, it compiles whatever syntax is not natively supported by the browser versions you told it to target.
So, compiling `async/await` and compiling ES module syntax are separate things.
There are a few cases where syntax compilation is split up cleanly, but when you dig into the internals of preset-env, transforms are rarely that isolated. That being said, "watch this space"...
- babel compiles async/await down to regenerator when using modules: true (at least for now) - the definition of “modern” browsers will change eventually and module/nomodule detection will not be relevant
Which is why I’d use ua sniffing: https://github.com/KidkArolis/jetpack/blob/master/docs/07-di...