Ok I see the difference
all
---------
- Handler will get called if and only all futures succeeded and completed.
- Handler will get called if and any one future failed and completed.
join
---------
- Handler will only get called only if all futures completed. Status will be success if all futures succeeded or fail if any one failed.
I guess we can think of ALL as fail fast and JOIN as fail safe. Maybe not the best analogy but hey...