Yes, we could use the same pool. The issue is, as I said before, we would then need to keep a track of which task completed because in that case, we would have two types of tasks in the pool - one the "scan" and another "close". We would have to pass in more information etc. when we schedule a task... Also when a "scan" task completes, we cancel the other redundant scan tasks. This would also need to be aware that it shouldn't cancel the "close" tasks.
In summary, it's doable very much but it's more code... Having two pools doesn't harm anything and these are internal implementation classes, not user-visible..