The attached example code raises a SyntaxError in Python 2, but is syntactically valid in Python 3. The return value is ignored and an empty generator is produced. I see no reason for this behavioral change.
> The return value is ignored and an empty generator is produced. It's not ignored: it is passed in the argument of the StopIterator object. > You can read https://www.python.org/dev/peps/pep-0380 for the entire story. See also the PEP 479 (Change StopIteration handling inside generators) and PEP 492 (Coroutines with async and await syntax). In short, it's a nice Python 3 feature, not a bug ;-)