FutureUtil should wait until timeout ends instead of throwing first timeout exception. ExceptionHandler should decide to throw exception or not. Caller should decide to cancel other futures or not.