class Async::Waiter

def async(parent: (@parent or Task.current), &block)

@asynchronous Executes the given block concurrently.
Execute a child task and add it to the waiter.
def async(parent: (@parent or Task.current), &block)
	parent.async do |task|
		yield(task)
	ensure
		@done << task
		@finished.signal
	end
end