class Async::IO::Notification
def initialize
def initialize pipe = ::IO.pipe # We could call wait and signal from different reactors/threads/processes, so we don't create wrappers here, because they are not thread safe by design. @input = pipe.first @output = pipe.last end