class Async::Container::Group
def wait_for(channel)
def wait_for(channel) io = channel.in @running[io] = Fiber.current while @running.key?(io) # Wait for some event on the channel: result = Fiber.yield if result == Interrupt channel.interrupt! elsif result == Terminate channel.terminate! elsif result yield result elsif message = channel.receive yield message else # Wait for the channel to exit: return channel.wait end end ensure @running.delete(io) end