The Islanders ended their losing streak at four games, one short of a season high. New York built a 3-1 lead, fell behind and then tied it when Ruslan Fedotenko beat Miikka Kiprusoff with 2:05 to play in the second period.
DiPietro made 38 saves in regulation.
Calgary built a two-goal lead after one period, but Owen Nolan, Craig Conroy and Dustin Boyd scored to give the Flames a brief lead. Nolan had two goals in regulation, but his miss in the shootout clinched the win for the Islanders.