yield, rather than return the result