add Promise.prototype.tap