JavaScript Destructuring w/ Promises and async

Take something like this...

Promise.all([ workA(), workB(), workC() ])  
.then(someArray => {
  // work with array, not fun
})

to this...

Promise.all([ workA(), workB(), workC() ])  
.then(([ a, b, c ]) => {
  // I can use a,b,c vars!
})

or with async...

let [a, b, c] = await Promise.all([workA(), workB(), workC()])  
// now I can work with a,b,c directly!

You can do the same for objects...

// bluebird example dreaded join
return Promise.join(workA(), workB(), workC(), (a, b, c) => {  
    // nested ouch
  }
)

instead...

return Promise.join(workA(), workB(), workC(),  
 (a, b, c) => ({ a, b, c })
) // yes!! escaped nesting
.then(({ a, b, c }) => {
  // work with a, b, c directly!
})

see example jsfiddle

Well whoop dee fucking doo!