In researching my issue with it surging and throwing a 45 - O2 rich code, I'm leaning towards the ICM and going to replace it today. In essence what it's doing is sending pulses when it shouldn't and the computer thinks the engine is turning faster, so it throws more fuel at it. In your case, I'm thinking your computer is adding spark and fuel to it based on false RPM feedback? Here's a link to reasons for the 45 code.
http://www.misterfixit.com/code45.htm
Check your wires and connectors from your ICM to your PCM
http://www.gearhead-efi.com/gearhead-efi/wiring/427-2.gif
If it all checks out, IMO, I'd buy a good quality ICM like AC Delco or Delfi. This is what I ordered, even with shipping it was still way cheaper than Auto Zone!
https://www.summitracing.com/parts/ado-d1984a
http://www.misterfixit.com/code45.htm
Check your wires and connectors from your ICM to your PCM
http://www.gearhead-efi.com/gearhead-efi/wiring/427-2.gif
If it all checks out, IMO, I'd buy a good quality ICM like AC Delco or Delfi. This is what I ordered, even with shipping it was still way cheaper than Auto Zone!
https://www.summitracing.com/parts/ado-d1984a