Iran's military vowed to respond after a US destroyer on Sunday fired on an Iranian-flagged cargo ship in the Gulf of Oman that tried to evade a US naval blockade.