diff --git a/lib/async/task.rb b/lib/async/task.rb index 1efad741..36645a5e 100644 --- a/lib/async/task.rb +++ b/lib/async/task.rb @@ -190,7 +190,7 @@ def wait @finished.wait end - if @result.is_a?(Exception) + if @status == :failed raise @result else return @result diff --git a/test/async/task.rb b/test/async/task.rb index 23d222df..dd7fdcd3 100644 --- a/test/async/task.rb +++ b/test/async/task.rb @@ -711,6 +711,13 @@ def sleep_forever expect(error_task).to be(:finished?) expect(innocent_task).to be(:finished?) end + + it "will not raise exception values returned by the task" do + error = StandardError.new + task = reactor.async { error } + expect(task.wait).to be == error + expect(task.result).to be == error + end end with '#result' do