[#1686] Make Promise.waitAll().get(long, TimeUnit) respect timeout and throw an exception