Turnout was 12%, that's insanely low. There's no Senate race in VA this year, and their VA-Gov race was last year, so unless you really cared about an Eric Cantor vs a Some Guy, you weren't going to take the time to vote. The types of people that normally voted for Cantor were complacent seeing him vs a token opponent, and didn't show up to the polls.

And yes it's an anti-establishment vote. Apparently there was also noise about Cantor being Pro-Amnesty. People that voted were activated against that, and he lost.

There's still analysis going on in regards to Democrats voting for Brat caused the Cantor loss. It appears though that even if 0 Dems voted for Brat, Brat still would have won. The majority of votes were in heavy Conservative districts, while the Democratic areas were very very low turnout.

That being said I think we should have closed primary systems everywhere. I could be swayed to allow unaffiliated/independent voters to pick what party they want to vote for on primary election day. And yes, some people could just switch to Dem/Repub before the party switch deadline, but the amount of people that will do that is much lower than the people that will vote without having to do that.