I think all the caveats applied to async function (ensure its inside a try/catch, dont use for in) points to how complicated it can be, http://jakearchibald.com/2014/es7-async-functions/ had to be amended with notes because a bunch of people very familiar with this style of coding still get it wrong. I cant see myself explaining to a new programmer how this all works.
I would really like to see us return to nice obvious blocking functions, taking the example the simplest way of all seems to be ...
let db = new PouchDB('mydb');
let result = db.post({});
let doc = db.get(result.id);
console.log(doc);
Let workers (or whatever equivalent they come up with in node) to make sure we dont block a single event loop and live happily ever after.Basically copy erlang, but without actually having to use erlang.