Only access thenable property once
Reject promise if getting the thenable fails
Correctly handle this for thenable
Resolve thenables returned inside other thenables
Don't reject promise on error after it was already fulfilled