Bitcoin relies on static time-outs in order to prevent blocking while tolerating network outages, congestion, and slow connections. Blocking can occur, for example, when a node stops responding during communication.
Given that Bitcoin runs atop an overlay network, communication latency and reliability pose a major challenge to the correct operation of the system.
For example, in Bitcoin version 0.10, the Bitcoin developers introduced a block download time-out of 20 minutes.
Similarly, for transactions, the Bitcoin developers introduced a 2-minute timeout. Note that the choice of the time-out is a nontrivial task and depends on a number of parameters such as bandwidth, object size, latency, processing power, and the Bitcoin version of each node. On the one hand, overly long time-outs might deteriorate the quality of service of the whole network and can be abused to conduct, for example, double-spending attacks . On the other hand, short timeouts might hinder effective communication under varying network conditions or when communicating with slow peers.
-  Available from https://github.com/bitcoin/bitcoin/pull/5608.