Target is to use a thread pool to:
- limit the number of threads generated to handle async operation: the thread pool should be bounded, with a rejection policy that returns an error (like 503 server too busy retry later)
- to have a clean shutdown
Also, the thread should have an uncaughtExceptionHandler
And we need to keep track of threads to handle the abort.