class Async::Task

def initialize(ios, reactor, &block)

def initialize(ios, reactor, &block)
	@ios = Hash[
		ios.collect{|io| [io.fileno, reactor.wrap(io, self)]}
	]
	
	@reactor = reactor
	
	@fiber = Fiber.new do
		set!
		
		begin
			yield(*@ios.values, self)
			# Async.logger.debug("Task #{self} completed normally.")
		rescue Interrupt
			# Async.logger.debug("Task #{self} interrupted: #{$!}")
		ensure
			close
		end
	end
end