After 13 years, Soup will release a new, API-incompatible version. This is a good thing, make sure we support it.
We do use libsoup to communicate with the extensions website, so this is a port of the extension downloader to the new API.
One notable bit is that Soup now uses Gio's async pattern (yay!), so in the preparation of the port I turned archive extraction into an async function. That massively steps on @3v1n0's feet in !1875 (closed), sorry for that!
The last patch adds back a fallback to Soup 2.4 if Soup 3 isn't available (yay monkey-patching!). The idea is to revert that patch once we can depend on Soup 3 without annoying all the distro people :-)