Added `async` functions and `await` operator for composing promise-returning functions.
Changed generator declarations and expressions to produce functions rather than prototypes to align with async functions.