protected function executeRule($user, $item, $params)
    {
        if ($item->ruleName === null) {
            return resolve(true);
        }
        return $this->getRule($item->ruleName)->then(
            function($rule) use ($user, $item, $params) {
                if ($rule instanceof Rule) {
                    return $rule->execute($user, $item, $params);
                }
                return reject(false);
            }
        )->then(null, function() use ($item) {
            throw new InvalidConfigException("Rule not found: {$item->ruleName}");
        });
    }