[fixes #1265] don’t diverge the promise chains (we must wait for the update to occur)

also some MISC refactoring