class Async::Semaphore

def wait

Wait until the semaphore becomes available.
def wait
	return unless blocking?
	
	@waiting.stack(FiberNode.new(Fiber.current)) do
		Fiber.scheduler.transfer while blocking?
	end
end