Promises and the run-loop now behave well together.

When they occure outside of the run-loop, they create there
own run-loop. When they occure within a run-loop, they now
join the current run-loop and schedule themselves on the current
actions queue.

This should fix some extra autoruns causes by promises being resolve
async.