[fixes #1265] don’t diverge the promise chain (we must wait for the upda...

...te to occur)

also some MISC refactoring

TODO:

- [x] tests
- [x] audit for other issues