Speedup startup time
When there are many database or modules, it can take times before the server is listening because the pool initialization can be slow. We could improve that by initialize the database in separate thread and start listening before they end.
We can do that because the pool initialization is protected by locks.