Why does requests library handle socket errors differently during request vs response streaming?