The problem with Diablo and HoTS both has been how they were monetized. Diablo III had a lot of problems at launch, but none of them inflamed the playerbase like the real money auction house. That was Blizard (I'm certain at the behest of Activision) finding a way to scrape extra money out of a full priced game.
HoTS underwent a huge change a year and a half or so ago into HoTS 2.0. Before that you could buy any hero and any skin in the game with real life money with the exception of "Master" skins which you bought with gold earned in game only and could only get if you've reached maximum level on a hero. After 2.0 everything went loot box. You could still buy heroes with real money but everything else came out of loot boxes, which would have been okay if they hadn't added a bunch of filler shit that is ultimately meaningless to dilute the loot pool. I understand the motivation behind it, but it's pretty transparent what was going on. I'm going to guess they thought they'd see a lot more revenue with the 2.0 model, and probably did for a short while after it went live as the whales bought loot boxes in droves to unlock everything. Once that happened though, there's very little incentive for a casual gamer to buy lootboxes when you can just get them for free by playing the game, and then use your shards from duplicates to selectively purchase what you want. It's not ideal but I'm willing to bet a very large portion of the base was doing that. Hell before 2.0 I bought almost every hero with it's release skin for real life money, and kept a stimpack going. That's probably $25 a month I was paying to play, but after 2.0 I was keeping the stim pack going for $10 a month and almost never buying heroes at release anymore, and certainly not loot boxes. It's possible the decision to move to lootboxes only was a Blizzard idea, but I can see Activisions hands all over that one too to try and increase revenue.