diff --git a/slack/rtm/client.py b/slack/rtm/client.py
index <HASH>..<HASH> 100644
--- a/slack/rtm/client.py
+++ b/slack/rtm/client.py
@@ -141,6 +141,7 @@ class RTMClient(object):
 
         def decorator(callback):
             RTMClient.on(event=event, callback=callback)
+            return callback
 
         return decorator
 
diff --git a/tests/rtm/test_rtm_client.py b/tests/rtm/test_rtm_client.py
index <HASH>..<HASH> 100644
--- a/tests/rtm/test_rtm_client.py
+++ b/tests/rtm/test_rtm_client.py
@@ -17,6 +17,14 @@ class TestRTMClient(unittest.TestCase):
     def tearDown(self):
         slack.RTMClient._callbacks = collections.defaultdict(list)
 
+    def test_run_on_returns_callback(self):
+        @slack.RTMClient.run_on(event="message")
+        def fn_used_elsewhere(**_unused_payload):
+            pass
+        
+        self.assertIsNotNone(fn_used_elsewhere)
+        self.assertEqual(fn_used_elsewhere.__name__, "fn_used_elsewhere")
+
     def test_run_on_annotation_sets_callbacks(self):
         @slack.RTMClient.run_on(event="message")
         def say_run_on(**payload):
Return callback from `RTMClient.run_on` (#<I>)

* Return callback from `RTMClient.run_on`



* Tidy up test



* Change param name to snake_case

Names are important 😄