How did you identify that these threads are a bottleneck for your application? If your application is idle, the event_engine threads will be waiting for work (via condvar wait, which will not tie up your CPU). If on the other hand there's work to be done, those threads will wake up and do that work. The existence of idle/waiting threads should not cause any decrease in performance, and otherwise all active threads are doing their jobs.
If you are using the C++ callback API, then note that your callbacks may run on these `event_engine` threads, so any blocking behavior seen here may also be your own.