Index: twisted/internet/test/reactormixins.py
===================================================================
--- twisted/internet/test/reactormixins.py	(revision 33676)
+++ twisted/internet/test/reactormixins.py	(working copy)
@@ -15,6 +15,7 @@
 from twisted.python.reflect import namedAny, fullyQualifiedName
 from twisted.python import log
 from twisted.python.failure import Failure
+from twisted.internet.interfaces import IReactorTime
 
 # Access private APIs.
 if platform.isWindows():
@@ -77,6 +78,8 @@
                     "twisted.internet.kqreactor.KQueueReactor",
                     ])
 
+    _reactors = ["twisted.internet.epollstmreactor.EPollSTMReactor"]
+
     reactorFactory = None
     originalHandler = None
     requiredInterfaces = None
@@ -120,6 +123,10 @@
         # branch that fixes it.
         #
         # -exarkun
+        uninstallHandler = getattr(reactor, '_uninstallHandler', None)
+        if uninstallHandler is not None:
+            uninstallHandler()
+
         reactor._uninstallHandler()
         if getattr(reactor, '_internalReaders', None) is not None:
             for reader in reactor._internalReaders:
@@ -127,15 +134,18 @@
                 reader.connectionLost(None)
             reactor._internalReaders.clear()
 
-        # Here's an extra thing unrelated to wakers but necessary for
-        # cleaning up after the reactors we make.  -exarkun
-        reactor.disconnectAll()
+        disconnectAll = getattr(reactor, 'disconnectAll', None)
+        if disconnectAll is not None:
+            # Here's an extra thing unrelated to wakers but necessary for
+            # cleaning up after the reactors we make.  -exarkun
+            disconnectAll()
 
-        # It would also be bad if any timed calls left over were allowed to
-        # run.
-        calls = reactor.getDelayedCalls()
-        for c in calls:
-            c.cancel()
+        if IReactorTime.providedBy(reactor):
+            # It would also be bad if any timed calls left over were allowed to
+            # run.
+            calls = reactor.getDelayedCalls()
+            for c in calls:
+                c.cancel()
 
 
     def buildReactor(self):
