It is not as simple as "send sequentially" or "send in parallel". Each connection is its own socket and the kernel performs package programming. The Bitcoin protocol does not have any recognition. When a node sends a message, it delivers it to the TCP stack, which often simply accepts the entire message immediately. Then it's up to the kernel to send it.
So, in a sense, it's not even really possible to send it sequentially & # 39; without some type of massive redesign, but neither would it be generally desirable to do so: TCP will not send more than the current reception window without obtaining an acknowledgment. So, if I had to wait until TCP had sent all the data to one pair before starting to send the next one, it would be waiting for it not to send any time. It would also increase exposure to tarpit attacks, where a malicious pair intentionally delays reception to delay propagation to all others.
Therefore, Bitcoin has always reviewed the list of pairs and delivered everything that had to be sent to each of them, leaving it in the kernel to program the packages. In the past, it was proposed to hand it over to only a few and then wait for it to be obtained before they reach the rest, but it is not obvious how to prevent tarpits in a robust way, and BIP152 largely raises the issue.