groostav
doWork(workUnits: Iterator<WorkUnit>){ head = workUnits.next(); doWorkAndAwait(head, workUnits); } doWorkAndAwait(headJob: WorkUnit, tail: Iterator<WorkUnit>){ headJob.run(); await { doWork(tail) } }