Refactor the `#run()` methods to use a Queue system

This is a basic refactoring offering the same functionnality as before but
with a queue system to manage the asynchronicity.

I PR right now as usual to get feedback. I'll add the priority queue a little later on.

Related to #433