È un bug in Npgsql. L'ho appena verificato. È stato risolto il 10/2016 , ma da allora non c'è stata una versione stabile. Allo stato attuale, per aggirare il problema dovrai creare dalle fonti attuali.
È causato da una combinazione del fatto che Socket.Poll() accetta un argomento di microsecondi Int32 e da quello che sembra essere un bug in Socket.Poll() stesso.
Innanzitutto, 2 ore vengono convertite in -1.389.934.592 microsecondi (7200 secondi * 1.000.000), il cui valore assoluto è di circa 48 minuti.
In secondo luogo, il Documentazione Socket.Poll() afferma:
Invece, sembra convertire al valore assoluto, circa 48 minuti, quindi c'è il tuo timeout dispari ma prevedibile.