You don't have to wait for requests to complete, so slow or broken connections don't cause hangs. IIRC, zmap[1] takes this approach. This allows the "probe" stage to be executed essentially as quickly as you can send packets, while you lazy load the results
[1] https://zmap.io/