we do it in a dedicated thread for memory leak protection, in
case some webapp code registers some ThreadLocals that they
forget to cleanup
TODO Figure out why DedicatedThreadExecutor hangs randomly in the
unit tests if used here