It could be the icv then, one thing ive learnt is the car is more intelligent than you think and when you change or disconnect something it normaly componsates elsewhere to keep it going.. Ie, disconect the electric wire on icv it will hunt slightly but wont surge, do the same with airflow meter and itll do the same thing.. I found it strange that when i opened the oil filler cap that made my m42 idle perfect, thats the engine trying to compensate for air change, weird! Lol..
Anyway i fixed mine last night, it turned out to be the lambda/02 sensor.. Good luck mate