NOTE I have yet to update this proposal, but I find @domenic's version here to be a much improved implementation:
Promise.prototype.finally = function (callback) {
return this.then(
value => this.constructor.resolve(callback()).then(() => value),
reason => this.constructor.resolve(callback()).then(() => throw reason)
);
};