Fix closes Issue12576 - fix urlopen behavior on sites which do not send (or obsfuscates) Connection: Close header.
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index a09a353..534408d 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1134,11 +1134,14 @@
 
         try:
             h.request(req.get_method(), req.selector, req.data, headers)
-            r = h.getresponse()  # an HTTPResponse instance
-        except socket.error as err:
+        except socket.error as err: # timeout error
             raise URLError(err)
         finally:
-            h.close()
+            try:
+                r = h.getresponse() # an HTTPResponse instance
+            except Exception as exp:
+                h.close()
+                raise exp
 
         r.url = req.get_full_url()
         # This line replaces the .msg attribute of the HTTPResponse