Since Bitcoin is largely a flooding-based P2P network it means that any message it receives on one of its connections also needs to be routed to all of its other connections. This means that by definition Bitcoin consumes far more upload bandwidth than it does download bandwidth since every downloaded message will also need to be uploaded to every other peer (by a factor of the number of connections - 1.)
We can assume that a node on the Bitcoin network can only upload messages as fast as it receives them so this means upload is also limited by download. Most ISPs also have far less upload bandwidth available to their customers than download bandwidth so conceivably this means that if a node is maxing its download bandwidth, it will lack the required resources to be able to broadcast those messages to its connected peers.
My question is: what happens when the messages start to overflow and the node can't keep up? Does Bitcoin maintain some kind of queue for the messages and what does it do when it can't keep up any more? Does it simply start to discard random messages? Also, given that you can't semi-reliably know beforehand what the available bandwidth is (without testing), how would you even set a limit for what size the buffer would need to be (the buffer will overflow eventually if the network can't keep up, right?)
(Sorry if these questions seem a bit technical but I am genuinely curious how Bitcoin handles this.)