Unloading an extension has become an async operation, but we aren't awaiting the result. That means that we recreate the extension object *before* we remove the "old" extension object from the map, with the effect that the reloaded extension is removed completely. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6507 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2694>