You should always cast. There is no reliable test for thenability; consider a getter that only sometimes returns a function.