Artboard 16light, inspiration, solution, idea, innovation,Google Sheets iconSwift icon
Published at
Updated at
Reading time
This post is part of my Today I learned series in which I share all my web development learnings.

async/await makes it possible to write asynchronous JavaScript that looks synchronous. It helps to fight the "callback hell". But what statements can we actually use in combination with await?

Ε ime Vidas and Axel Rauschmayer had a really interesting Twitter conversation recently. So let's look at some snippets.

(async () => { console.log(await 'foo'); })(); // 'foo'
(async () => { console.log(await 5); })();     // 5

It turns out that you can really await anything. I didn't know that. This is one of these tiny JS details I really like to discover. If you await something that's not a promise it will return the actual value.

let thenable = {
  then: (fn) => {

(async () => { console.log(await thenable); })() // 'jup'

And... it doesn't have to be a promise. A thenable (anything that includes a function called then) works also fine. So thanks Ε ime and Axel for having these conversations in public.

Related Topics

Related Articles