My concern was that he actually had a flush already and I'd get 4-bet if I raised. If that's the case, I check-call any river that doesn't pair the board, obviously not folding top set getting 14:1, and I've put in 5 bets on the turn and river.
If I just call, then check-raise a non-heart river, and he 3-bets, I call, and I've still lost 5 bets. So if he has a flush I lost 5 bets whatever.
However if he has 2 pair / set, and I just call, river is not a heart, I win 4 bets from a river check-raise. If I raise then lead the river, I still win 4 bets, or maybe 5 if he thinks his set is good.
If the river is a heart, it'll go check-check, and I only win 2 bets. However if I raise the turn and the river is a heart, I win 3 bets.
So if he has 2 pair / set rather than a flush or flush draw, it looks like raising the turn is better.