Better `promote_failure` type spec