trait/promise: jQuery compatible .promise()