As I type, we run Babel 6.26.0 with preset-env in the Pen Editor (see our versions page). We'll get updated to 7 as soon as we can, after we scope out all what that might mean. I'm not sure if that's related to this exactly anyway.

Say you want to use an async function and await it, like this:

function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time))

async function count () {
  let poem = ['this', 'little', 'piggy', 'went', 'to', 'market']
  for (let word in poem) {
    await sleep(1000)


That will work just fine in most browsers as-is. See the support chart from MDN:

But it kinda feels like fancy modern JavaScript. So, I wouldn't blame you for flipping on Babel, the purpose of which is to transpile JavaScript down to older versions for higher browser compatibility. But as soon as you do, you'll see a JavaScript error.

Babel is assuming that you'll be using babel-polyfill. Again as I type, we are not processing your JavaScript-with-Babel with babel-polyfill like you might on your own project. We might client-side that choice in the future, but that's how it is now.

The good news here is that you can use babel polyfill as a client side library. You can easily add it like this:

Here's a working example for ya:

See the Pen Awaiting with Sleep by Chris Coyier (@chriscoyier) on CodePen.