promise: refactor has_failed()