Looks good, but I don't like using isPromise(C) to mean isThenable(C).