Timeout exception with better backtrace

Stephen Paul Weber created

Change summary

lib/session_manager.rb | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Detailed changes

lib/session_manager.rb 🔗

@@ -12,11 +12,12 @@ class SessionManager
 	end
 
 	def promise_for(stanza, timeout: @timeout)
+		begin; raise Timeout, "Timeout"; rescue Timeout; timeout_exception = $!; end
 		id = "#{stanza.to.stripped}/#{stanza.public_send(@id_msg)}"
 		@sessions.fetch(id) do
 			@sessions[id] = EMPromise.new
 			EM.add_timer(timeout) do
-				@sessions.delete(id)&.reject(Timeout.new)
+				@sessions.delete(id)&.reject(timeout_exception)
 			end
 			@sessions[id]
 		end