renames callbacks to match a+
adds onRejected to then
should call the onRejected, given to then
onFulfilled should only be called once
onRejected should only be called once
then returns a new promise