make _socket.socket weakrefable (closes #22569)

Patch from Alex Gaynor.
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 81bd537..0ce80b9 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -12,9 +12,9 @@
 import os
 import array
 import contextlib
-from weakref import proxy
 import signal
 import math
+import weakref
 try:
     import _socket
 except ImportError:
@@ -264,7 +264,7 @@
 
     def test_weakref(self):
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        p = proxy(s)
+        p = weakref.proxy(s)
         self.assertEqual(p.fileno(), s.fileno())
         s.close()
         s = None
@@ -275,6 +275,14 @@
         else:
             self.fail('Socket proxy still exists')
 
+    def test_weakref__sock(self):
+        s = socket.socket()._sock
+        w = weakref.ref(s)
+        self.assertIs(w(), s)
+        del s
+        test_support.gc_collect()
+        self.assertIsNone(w())
+
     def testSocketError(self):
         # Testing socket module exceptions
         def raise_error(*args, **kwargs):