I found that when a peer receives an
inv message with type=block, it will immediately request that block or that block's headers with a
getdata message or
getheaders message. But if the peer receives an
inv message with type=tx, it won't respond immediately. For example:
Node A inv(tx) Node B | Node A inv(block) Node B <----------- | <--------- | [delay] | [no delay] | getdata(tx) | getdata(block) -----------> | --------->
Why is there a delay in requesting transactions but not a delay in requesting blocks? I'm guessing that relaying a transaction is less important than getting the most recent block to ensure the node is on the consensus best block chain.