We probably also want a count in here which bails out after say 60 attempts (2 minutes).