Going full speed with async I didn't tell you the whole story: multithreading is not the only way to increase a program's speed, especially in our case, where most of the time is spent doing I/O operations (TCP connections). Please welcome async-await. Threads have problems: they were designed to parallelize compute-intensive tasks. However, our current use-case is I/O (Input / Output) intensive: our scanner launches a lot of network requests and doesn't actually compute much. In our situation, it means that threads have two significant problems: They use a lot (compared to others solutions) of memory Launches and context switches