protected override async Task <CommandResponse <VoteTracker> > ExecuteStage(CommandStage stage, CommandResponse <VoteTracker> previous) { switch (stage) { case CommandStage.OnExecuting: var q = new QueryVote(_voteID); var vote = await q.ExecuteAsync(); var notPassed = vote.Restrictions.FirstOrDefault(x => { var e = x.Evaluate(User); return(!e.Success); }); _restrictionsPassed = notPassed == null; break; case CommandStage.OnExecuted: if (previous.Success) { CacheHandler.Instance.Remove(CachingKey.VoteStatistics(_voteID)); } break; } return(await base.ExecuteStage(stage, previous)); }