module Async::IO

def self.buffer?

def self.buffer?
	::IO.const_defined?(:Buffer)
end

def self.file_descriptor_limit

def self.file_descriptor_limit
	Process.getrlimit(Process::RLIMIT_NOFILE).first
end

def self.pipe

def self.pipe
	::IO.pipe.map(&Generic.method(:new))
end

def self.try_convert(io, &block)

Convert a Ruby ::IO object to a wrapped instance:
def self.try_convert(io, &block)
	if wrapper_class = Generic::WRAPPERS[io.class]
		wrapper_class.new(io, &block)
	else
		raise ArgumentError.new("Unsure how to wrap #{io.class}!")
	end
end