Using await-generator

await-generator provides an alternative approach to asynchronous programming. Functions that use async logic are written in generator functions. The main trick is that your function pauses (using yield) when you want to wait for a value, then await-generator resumes your function and sends you the return value from the async function via $generator->send().