trait/promise: updating to conform to Promises/A+ v2