private static void join(ExecutorService executor) {
        while (true) {
            try {
                if (executor.awaitTermination(60, TimeUnit.SECONDS)) {
                    return;
                }
            } catch (InterruptedException e) {}
        }
    }
An executor that will first try a bounded cached thread pool before falling back to an unbounded
single threaded thread pool that will take over dispatching to the primary pool.
vespajlib/src/main/java/com/yahoo/concurrent/CachedThreadPoolWithFallback.java