Awaiting generators
Since every async function is implemented as a generator function,
simply calling it will not have any effects.
Instead, you have to yield from the generator.
function a(): Generator {
	// some other async logic here
	return 1;
}
function main(): Generator {
	$a = yield from $this->a();
	var_dump($a);
}
It is easy to forget to yield from the generator.
Handling errors
yield from will throw an exception
if the generator function you called threw an exception.
function err(): Generator {
	// some other async logic here
	throw new Exception("Test");
}
function main(): Generator {
	try {
		yield from err();
	} catch(Exception $e) {
		var_dump($e->getMessage()); // string(4) "Test"
	}
}