implement Promise, an enhanced more full-featured version of Covenant, refactor a bit