In 1994 the EVAP system is pretty basic
Hose from the top of the gas tank to charcoal canister in engine bay
Basic diagram of charcoal canister:
http://www.gmcmhphotos.com/photos/data/6792/Carbon_Canister_Diagram.gif
The Caps are the Fresh Air Vents
The Purge hose in earlier EVAP systems just ran to a Ported Vacuum source, with EFI that would be on the air cleaner side of throttle plate, so on throttle body but not inside the intake manifold
Ported vacuum is lower vacuum than intake side, and also opposite of "regular vacuum" its low at idle and higher when throttle is opened
There can also be a Purge Valve, 12volt solenoid "air valve", that computer can use to apply regular vacuum to canister
1995 and up always had a Purge valve and a Vent valve, and a Pressure sensor on the hose from tank or at the top of the gas tank, so computer could monitor EVAP systems negative pressure level in the gas tank
In very warm weather, gasoline vapor level is much higher, or if gas tank was overfilled a few times, putting liquid gasoline in the EVAPs hose at gas tank, there could be more vapor being sucked into engine causing computer to lower the open time for injectors and setting Rich code
But that would be a long shot in my opinion
Lean and Rich codes are about the computer's calculated open time for fuel injectors, not about the engine actually running Lean or running Rich
Computer knows its running, in this case, a 2.3 Liter engine, so it already knows EXACTLY how much air is coming in at any RPM or throttle position
Computer knows gasoline air/fuel ratio is 14.7/1, this is a WEIGHT ratio
Air WEIGHT changes alot, so it has MAF sensor and Air Temp sensor to get the weight of the incoming air
There is NO fuel pressure sensor, but 1994 computer is set to use 35psi as the baseline, and computer is programmed for the SIZE/FLOW of the fuel injectors, say 14 POUNDS an hour(weight ratio)
So it calculates how long to open each injector to get the correct WEIGHT of gasoline added to that measured weight of the air, 14.7/1
If O2 sensor shows too much Oxygen in exhaust, called lean, computer opens injectors a bit longer
If O2 sensor shows too little Oxygen in exhaust, called rich, computer reduces open time for injectors
All done in 1, maybe 2, seconds, so very fast corrections
This is called Closed Loop operation
If computer is having to correct it's calculated open time for injectors by more than 20% in either direction, it will set a lean(longer open time) code or rich(shorter open time) code to let driver know there is a problem with the system
More likely issues for rich code would be failing FPR(fuel pressure regulator), check its vacuum hose for gasoline, and if possible check fuel pressure, expected running pressure is 35PSI
The fuel pump is capable of 80+ PSI, if FPR sticks closed then pressure will go higher than 45psi and that would cause Rich codes
An obviously if FPR was leaking and gasoline was being sucked in via the FPRs vacuum line that would set Rich codes
Failing MAF sensor usually causes lean code, but certainly could cause rich code as well
Air Temp sensor(IAT) can also cause lean or rich codes