git » sdk » commit 04787b4

Make subsequent triggers async

author Stephen Paul Weber
2026-07-22 19:22:17 UTC
committer Stephen Paul Weber
2026-07-22 19:22:17 UTC
parent 5844b8e8257f8c2c62fa3bc9352c096564a8a82b

Make subsequent triggers async

borogove/streams/XmppJsStream.hx +11 -7

diff --git a/borogove/streams/XmppJsStream.hx b/borogove/streams/XmppJsStream.hx
index 1faddce..be7b922 100644
--- a/borogove/streams/XmppJsStream.hx
+++ b/borogove/streams/XmppJsStream.hx
@@ -508,13 +508,17 @@ class XmppJsStream extends GenericStream {
 	}
 
 	private function onError(event: FSMEvent) {
-		final xmppError = Std.downcast(event.toAttr?.error, XmppJsError);
-		if (xmppError?.name == "SASLError") {
-			this.trigger("auth/fail", xmppError);
-		} else {
-			// If everConnected then we are retrying so not fatal
-			if (!everConnected) trigger("status/error", event.toAttr?.error);
-		}
+		// This happens before error FSM has finished
+		// So force follow up triggers to happen after
+		haxe.Timer.delay(() -> {
+			final xmppError = Std.downcast(event.toAttr?.error, XmppJsError);
+			if (xmppError?.name == "SASLError") {
+				this.trigger("auth/fail", xmppError);
+			} else {
+				// If everConnected then we are retrying so not fatal
+				if (!everConnected) trigger("status/error", event.toAttr?.error);
+			}
+		}, 0);
 
 		return true;
 	}