Promise.prototype.done = function(cb) {
	let P = this.constructor;
	return this.then(
		value => P.resolve(cb()).then(() => value),
		reason =>
			P.resolve(cb()).then(() => {
				throw reason;
			})
	);
};
