Add a Swig test
Proper control of the tasks execution

An executor function is pushed in the tasks array (instead of an already
running promise), and they're all executed sequencially at the end.

We're now sure the context won't change during a task execution.

This allows to implement a working `base` method.