When an internal message is forwarded to the internal pool, and that pool is full, then a new thread is spawned to run the task.
If we have a hiccup that for example causes a high number of internal messages (e.g. retransmission requests) to be received, then we might end up with a high number of temporary threads being created. This could lead to resource exhaustion and/or exceeding of ulimit levels.
It is sometimes better to simply drop the internal message rather than spawning a new thread. In the example of retransmission requests, dropping would even be beneficial, to reduce the burden on the system.
Note: timer tasks can never be dropped, but TimeScheulder3 has its own logic, which does spawn a new thread on a full pool, so these critical tasks are not dropped. Timer tasks are not numerous, so spawning is not critical.