class Async::Waiter

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

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