
The code that handles extracting extension archives currently uses an awkward double-callback system. We can do significantly better by using an async function and exceptions. Partially based on code from Marco Trevisan. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1940>