diff --git a/widget/cocoa/nsMenuX.mm b/widget/cocoa/nsMenuX.mm
index 43381f7838c18253d83ed9f880281484b4b74030..cf66ea9046c39b19e4fa1fff107f328a6ba6e77a 100644
--- a/widget/cocoa/nsMenuX.mm
+++ b/widget/cocoa/nsMenuX.mm
@@ -411,17 +411,17 @@ void nsMenuX::MenuOpenedAsync() {
     mContent->AsElement()->SetAttr(kNameSpaceID_None, nsGkAtoms::open, u"true"_ns, true);
   }
 
+  // Notify our observer.
+  if (mObserver) {
+    mObserver->OnMenuOpened();
+  }
+
   // Fire popupshown.
   nsEventStatus status = nsEventStatus_eIgnore;
   WidgetMouseEvent event(true, eXULPopupShown, nullptr, WidgetMouseEvent::eReal);
   nsCOMPtr<nsIContent> popupContent = GetMenuPopupContent();
   nsIContent* dispatchTo = popupContent ? popupContent : mContent;
   EventDispatcher::Dispatch(dispatchTo, nullptr, &event, nullptr, &status);
-
-  // Notify our observer.
-  if (mObserver) {
-    mObserver->OnMenuOpened();
-  }
 }
 
 void nsMenuX::MenuClosed() {