it is unsafe for us to test for `then` here, we should likely cast the return result and then it.