In latest webpack, cache is mistakenly reused between server and client builds
I've updated all project dependencies, and client-side code started to compile randomly either as ES6 code (breaking old browsers), or as `{ ie: 9 }` code (as it always used to do).

I discovered that this happens because *something* is now cached at `node_modules/.cache` across webpack compilations. In particular, `lib/babel/preset.js` is only called once, so this code:

```js
  const presets = [
    [
      require.resolve('@babel/preset-env'),
      {
        modules: env === 'test',
        targets:
          isServer || env === 'test'
            ? {
                node: 'current'
              }
            : {
                ie: 9
              }
      }
    ]
  ]
```

only runs once on the first of two compiles. (and doesn't get called at all on subsequent builds)

The randomness comes from this:

```js
await Promise.all([runWebpack(serverCompiler), runWebpack(clientCompiler)])
```

Usually `serverCompiler` wins the race, although sometimes `clientCompiler` wins and ALL code is transpiled to ES5.