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)
126
126
127
127
on_error { |e | child . on_reject ( e ) }
128
128
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
133
137
end
134
138
135
139
child
Original file line number Diff line number Diff line change @@ -289,6 +289,12 @@ module Concurrent
289
289
expect ( child ) . to be_rejected
290
290
end
291
291
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
+
292
298
end
293
299
294
300
describe '#zip' do
You can’t perform that action at this time.
0 commit comments