Turns out JS can throw an error on a line like return 42;
generator - loops forever sleeping 1s at a time, and when you try to stop it, it waits 1s and then throws an error.
iteration - calls generator via a for-await and attempts to return within the iteration. This forces iteration to wait for generators finally section to run which includes a 1s await!