Add isThenable(), only flatten one level for promises
Remove promise.fail()

The standard is still a moving target on this