Don't ever process callbacks in a reentrant fashion; once we start processing a promises's callbacks, always finish the currently-executing callback before moving on to the next.