Investigate automatically combining API requests
One major limitation to concurrency in mwapi
is that requests are supposed to be serial, nor parallel. m3api has an interesting approach to this, by combining compatible, queued requests. https://github.com/lucaswerkmeister/m3api#automatically-combining-requests
Currently we use a semaphore for locking, maybe it can go into some shared queue instead, and then wake up the future once it's complete.
It does require splitting the request up so each caller only gets the response they asked for.