diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index db426d7..3dad594 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -50,6 +50,8 @@
 import socket
 import sys
 import time
+import warnings
+
 import os
 from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, \
      ENOTCONN, ESHUTDOWN, EINTR, EISCONN, EBADF, ECONNABORTED, errorcode
@@ -60,10 +62,12 @@
     socket_map = {}
 
 def _strerror(err):
-    res = os.strerror(err)
-    if res == 'Unknown error':
-        res = errorcode[err]
-    return res
+    try:
+        return strerror(err)
+    except (ValueError, OverflowError):
+        if err in errorcode:
+            return errorcode[err]
+        return "Unknown error %s" %err
 
 class ExitNow(Exception):
     pass
@@ -264,6 +268,8 @@
                 status.append(repr(self.addr))
         return '<%s at %#x>' % (' '.join(status), id(self))
 
+    __str__ = __repr__
+
     def add_channel(self, map=None):
         #self.log_info('adding channel %s' % self)
         if map is None:
@@ -395,7 +401,15 @@
     # cheap inheritance, used to pass all other attribute
     # references to the underlying socket object.
     def __getattr__(self, attr):
-        return getattr(self.socket, attr)
+        try:
+            retattr = getattr(self.socket, attr)
+        except AttributeError:
+            raise AttributeError("%s instance has no attribute '%s'"
+                                 %(self.__class__.__name__, attr))
+        else:
+            warnings.warn("cheap inheritance is deprecated", DeprecationWarning,
+                          stacklevel=2)
+            return retattr
 
     # log and log_info may be overridden to provide more sophisticated
     # logging and warning methods. In general, log is for 'hit' logging
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
index ad4153c..4b388e7 100644
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -5,6 +5,7 @@
 import socket
 import sys
 import time
+import warnings
 
 from test import support
 from test.support import TESTFN, run_unittest, unlink
@@ -306,6 +307,22 @@
                     'warning: unhandled accept event']
         self.assertEquals(lines, expected)
 
+    def test_issue_8594(self):
+        # XXX - this test is supposed to be removed in next major Python
+        # version
+        d = asyncore.dispatcher(socket.socket())
+        # make sure the error message no longer refers to the socket
+        # object but the dispatcher instance instead
+        self.assertRaisesRegexp(AttributeError, 'dispatcher instance',
+                                getattr, d, 'foo')
+        # cheap inheritance with the underlying socket is supposed
+        # to still work but a DeprecationWarning is expected
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter("always")
+            family = d.family
+            self.assertEqual(family, socket.AF_INET)
+            self.assertTrue(len(w) == 1)
+            self.assertTrue(issubclass(w[0].category, DeprecationWarning))
 
 
 class dispatcherwithsend_noread(asyncore.dispatcher_with_send):
diff --git a/Misc/NEWS b/Misc/NEWS
index ef00387..a48f8ed 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -348,6 +348,13 @@
 Library
 -------
 
+- Issue #8573: asyncore _strerror() function might throw ValueError.
+
+- Issue #8483: asyncore.dispatcher's __getattr__ method produced confusing 
+  error messages when accessing undefined class attributes because of the cheap 
+  inheritance with the underlying socket object. 
+  The cheap inheritance has been deprecated.
+
 - Issue #4265: shutil.copyfile() was leaking file descriptors when disk fills.
   Patch by Tres Seaver.
 
