PERF: Call web hook events in a new thread (#7451)

PERF: Call web hook events in a new thread (#7451)

diff --git a/lib/discourse_event.rb b/lib/discourse_event.rb
index c61a70b..b9942e8 100644
--- a/lib/discourse_event.rb
+++ b/lib/discourse_event.rb
@@ -1,6 +1,13 @@
 # This is meant to be used by plugins to trigger and listen to events
 # So we can execute code when things happen.
 class DiscourseEvent
+  def self.async
+    @async ||= !Rails.env.test?
+  end
+
+  def self.async=(val)
+    @async = val
+  end
 
   # Defaults to a hash where default values are empty sets.
   def self.events
@@ -8,6 +15,14 @@ class DiscourseEvent
   end
 
   def self.trigger(event_name, *params)
+    if async
+      Thread.new { call_events(event_name, *params) }
+    else
+      call_events(event_name, *params)
+    end
+  end
+
+  def self.call_events(event_name, *params)
     events[event_name].each do |event|
       event.call(*params)
     end

GitHub sha: 09ae12bd

Revert "PERF: Call web hook events in a new thread (#7451)" (#7456)