adds hasFailed and isFinished methods to Promise
adds progress() and onProgress() to Promise, and moves finish callback from then() to onFinish()