In the fuse box located just behind the front passenger wheel well, under the hood, there is one 7.5 amp fuse (Clock) you can pull that for ten seconds to reset the ECU. If it comes back you have a hard failure and you need to get the code. Check the DIY FAQ here to see about pulling the code via the engine check light "blink" method. You can review it in the on line service manual too.
Basically once you plug in the jumper, then turn the ingition to "on", you will see a series of flashes, long and short. Long = 10's short = 1's. So if you get two longs and one short blink it is a 21. The codes are also listed on the site in the DIY section.
Your car is an OBDII so depending on the problem a code scanner may reveal additional codes, but if it is a 02 sensor this blink method will tell you. If you are not sure/comfortable doing this after reviewing the manual and DIY section then I would suggest paying the $90
If you do pay for this, ask if they will take the diagnostic fee off the bill if you have it repaired there. This is not uncommon. Typically these charges are because dealers or independents know that sometimes people get the code fix it themselves and the time spent for diagnosis is lost time for a tech. I have spent close to an hour sometimes diagnosing codes/test driving multiple times, to define the bad part from the code. It is not unreasonable if $90 is their hourly rate.
Remember the tech doing this knows everything I put in this post from being trained