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.
Merge pull request #468 from SBoudrias/queue

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