diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index db57ee8..558406c 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -240,7 +240,7 @@
         Any positional arguments after the callback will be passed to
         the callback when it is called.
         """
-        handle = events.make_handle(callback, args)
+        handle = events.Handle(callback, args)
         self._ready.append(handle)
         return handle
 
diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py
index 6240019..4c0cbb0 100644
--- a/Lib/asyncio/events.py
+++ b/Lib/asyncio/events.py
@@ -20,6 +20,7 @@
     """Object returned by callback registration methods."""
 
     def __init__(self, callback, args):
+        assert not isinstance(callback, Handle), 'A Handle is not a callback'
         self._callback = callback
         self._args = args
         self._cancelled = False
@@ -42,12 +43,6 @@
         self = None  # Needed to break cycles when an exception occurs.
 
 
-def make_handle(callback, args):
-    # TODO: Inline this?  Or make it a private EventLoop method?
-    assert not isinstance(callback, Handle), 'A Handle is not a callback'
-    return Handle(callback, args)
-
-
 class TimerHandle(Handle):
     """Object returned by timed callback registration methods."""
 
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
index 202c14b..14231c5 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -132,7 +132,7 @@
 
     def add_reader(self, fd, callback, *args):
         """Add a reader callback."""
-        handle = events.make_handle(callback, args)
+        handle = events.Handle(callback, args)
         try:
             key = self._selector.get_key(fd)
         except KeyError:
@@ -167,7 +167,7 @@
 
     def add_writer(self, fd, callback, *args):
         """Add a writer callback.."""
-        handle = events.make_handle(callback, args)
+        handle = events.Handle(callback, args)
         try:
             key = self._selector.get_key(fd)
         except KeyError:
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index ccb4454..71d69cf 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -216,7 +216,7 @@
                 raise AssertionError("Time generator is not finished")
 
     def add_reader(self, fd, callback, *args):
-        self.readers[fd] = events.make_handle(callback, args)
+        self.readers[fd] = events.Handle(callback, args)
 
     def remove_reader(self, fd):
         self.remove_reader_count[fd] += 1
@@ -235,7 +235,7 @@
             handle._args, args)
 
     def add_writer(self, fd, callback, *args):
-        self.writers[fd] = events.make_handle(callback, args)
+        self.writers[fd] = events.Handle(callback, args)
 
     def remove_writer(self, fd):
         self.remove_writer_count[fd] += 1
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index 3ce2db8..ea79d33 100644
--- a/Lib/asyncio/unix_events.py
+++ b/Lib/asyncio/unix_events.py
@@ -64,7 +64,7 @@
         except ValueError as exc:
             raise RuntimeError(str(exc))
 
-        handle = events.make_handle(callback, args)
+        handle = events.Handle(callback, args)
         self._signal_handlers[sig] = handle
 
         try:
diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
index c2988c0..4fb4b25 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -1660,12 +1660,12 @@
             '<function HandleTests.test_handle.<locals>.callback'))
         self.assertTrue(r.endswith('())<cancelled>'), r)
 
-    def test_make_handle(self):
+    def test_handle(self):
         def callback(*args):
             return args
         h1 = asyncio.Handle(callback, ())
         self.assertRaises(
-            AssertionError, asyncio.events.make_handle, h1, ())
+            AssertionError, asyncio.Handle, h1, ())
 
     @unittest.mock.patch('asyncio.events.logger')
     def test_callback_with_exception(self, log):
