File tree Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -126,10 +126,14 @@ def flat_map(&block)
126126
127127 on_error { |e | child . on_reject ( e ) }
128128 on_success do |result1 |
129- inner = block . call ( result1 )
130- inner . execute
131- inner . on_success { |result2 | child . on_fulfill ( result2 ) }
132- inner . on_error { |e | child . on_reject ( e ) }
129+ begin
130+ inner = block . call ( result1 )
131+ inner . execute
132+ inner . on_success { |result2 | child . on_fulfill ( result2 ) }
133+ inner . on_error { |e | child . on_reject ( e ) }
134+ rescue => e
135+ child . on_reject ( e )
136+ end
133137 end
134138
135139 child
Original file line number Diff line number Diff line change @@ -289,6 +289,12 @@ module Concurrent
289289 expect ( child ) . to be_rejected
290290 end
291291
292+ it 'fails if the generating block fails' do
293+ child = Promise . new ( executor : executor ) { } . flat_map { fail } . execute . wait
294+
295+ expect ( child ) . to be_rejected
296+ end
297+
292298 end
293299
294300 describe '#zip' do
You can’t perform that action at this time.
0 commit comments