Is the change observable? I figured it was an optimization to check `isPromise` first. I suppose that thenables would be a gray area, especially if we introduce the `accepted` state.