public Future<?> submitOrdered(Object key, Runnable task) {
    return chooseExecutor(key).submit(task);
  }
Awaits termination of each of the underlying threads

Note: This can potentially block longer than the given timeout, since the timeout applies for each of the
underlying threads.

@param timeout time to wait for each thread to terminate
@param unit unit of time for specifying timeout
@return Returns True, if all threads terminate successfully within their timeout. False, otherwise.
@throws InterruptedException thrown when the current executing thread is interrupted
samza-core/src/main/java/org/apache/samza/executors/KeyBasedExecutorService.java