It's actually how babel's "standard" async/await support works. First to generators, then generators to ES5-compatible code using Facebook's Regenerator (which includes a polyfill).
Pragmatic and it works, but the code isn't pretty. Which is why Kneden was made.