It turns out our eyes weren't deceiving us in most of those instances. The NBA released its report on the officiating during the final minutes of the game and found four times during which a foul should have been called but wasn't.
The Warriors were the beneficiaries of three of those non-calls — and two of the fouls that weren't called were committed against James, the league's biggest star.
The first one came during the tipoff to start overtime, when Golden State's Draymond Green made contact with Tristan Thompson's arm. There was no whistle on that, but the NBA says a foul should have been called.
Next, with the shot clock almost expired with 1:37 left in overtime, the officials messed up twice. First, James should have been called for traveling, but wasn't, after moving his pivot foot. Then, on the ensuing shot, Golden State's Andre Iguodala got away with making contact with James' arm, and the score remained 92-91 Cavaliers.
The NBA agreed with the official's decision that Green's block of a James shot with 47 seconds remaining was clean but determined that Green should have been whistled for his contact with James' arm on the subsequent jump ball. Instead, James ended up catching his own tip, and the Warriors received possession and went on to take a 93-92 lead with 29 seconds remaining.
Luckily, at least from Cleveland's perspective, none of the missed calls affected the result of the game, as Matthew Dellavedova made a pair of free throws and James hit one — all on fouls determined by the NBA to be correctly called — for a 95-93 Cavaliers win.