class EventMachine::Synchrony::Iterator

def each(foreach=nil, after=nil, &blk)

on the fly (see iterator documentation in EM)
means that you loose ability to choose concurrency
jobs are done before returning. Unfortunately this
synchronous iterator which will wait until all the
def each(foreach=nil, after=nil, &blk)
  fiber = Fiber.current
  fe = (foreach || blk)
  cb = Proc.new do
    after.call if after
    fiber.resume
  end
  Fiber.yield super(fe, cb)
end