diff --git a/lib/async/io/generic.rb b/lib/async/io/generic.rb index 5902da3..b748dd0 100644 --- a/lib/async/io/generic.rb +++ b/lib/async/io/generic.rb @@ -169,7 +169,7 @@ def wait(timeout = self.timeout, mode = :read) when :write wait_writable(timeout) else - wait_any(:rw, timeout) + wait_any(timeout) end rescue TimeoutError return nil diff --git a/spec/async/io/generic_spec.rb b/spec/async/io/generic_spec.rb index 8b24470..3054fff 100644 --- a/spec/async/io/generic_spec.rb +++ b/spec/async/io/generic_spec.rb @@ -70,6 +70,32 @@ [reader, writer].each(&:wait) end + + it "can wait for anything" do + reader = reactor.async do |task| + duration = Async::Clock.measure do + input.wait(1, nil) + end + + expect(duration).to be >= wait_duration + expect(input.read(1024)).to be == message + + input.close + end + + writer = reactor.async do |task| + duration = Async::Clock.measure do + output.wait(1, :write) + end + + task.sleep(wait_duration) + + output.write(message) + output.close + end + + [reader, writer].each(&:wait) + end it "can return nil when timeout is exceeded" do reader = reactor.async do |task|