Implement promises for proposers.
Merge branch `rewrite` into `master`.