``` doWork(workUnits: Iterator<WorkUnit>){ ...
# coroutines
g
Copy code
doWork(workUnits: Iterator<WorkUnit>){
  head = workUnits.next();
  doWorkAndAwait(head, workUnits);
}

doWorkAndAwait(headJob: WorkUnit, tail: Iterator<WorkUnit>){
  headJob.run();
  await { doWork(tail) }
}