Skip to content

Commit 183a4fc

Browse files
committed
Deal correctly with multiple exceptions in #exception method
1 parent 001691a commit 183a4fc

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lib/concurrent/edge/promises.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -920,13 +920,14 @@ def value!(timeout = nil)
920920
# @example
921921
# raise Promises.rejected_future(StandardError.new("boom"))
922922
# @raise [StandardError] when raising not rejected future
923+
# @return [Exception]
923924
def exception(*args)
924925
raise Concurrent::Error, 'it is not rejected' unless rejected?
925-
reason = internal_state.reason
926-
if reason.is_a?(::Array)
926+
reason = Array(internal_state.reason).compact
927+
if reason.size > 1
927928
Concurrent::MultipleErrors.new reason
928929
else
929-
reason.exception(*args)
930+
reason[0].exception(*args)
930931
end
931932
end
932933

0 commit comments

Comments
 (0)