Publicly rebuked by the president and deeply unpopular at home, Keir Starmer is sticking to his guns over Iran and wants to avoid “the mistakes of Iraq”.