I wasn't happy with the way this was treated, and homebrewed the following:
Each round the character is endangered, they must make an RRCO. If their airway is completely obstructed, the attack level is equal to the character level. If the character is in an oxygen-poor environment but still getting some air, the attack level can be decreased proportionately. For example, at 10% oxygen (compared to normal atmospheric 20%), AL=½ character level.
If the RR succeeds, the character does not suffer any damage. If it fails, the character loses Exhaustion Points equal to the failure margin.
Simultaneously, the character will automatically begin to panic. Each round the RR fails, the panic modifier on all actions is -50. If the RR succeeds, the panic modifier is only -20. This only applies to actions, not RRs.
When Exhaustion Points reach zero, all remaining and future RR failures become stat reductions. Each round, randomly apply the RR failure to CO, ME, or RE. If it reduces CO, reduce the CO bonus accordingly. When any stat reaches zero, the character is dead. There is no HP damage from suffocation/asphyxiation.
If the character survives, half of stat loss is permanent and can only be healed by magic. The other half heals at a rate of 5 points per day of full rest, 1 per day of activity.
--------
I've used it for both a suffocation encounter and a drowning-while-failing-to-swim encounter, and it worked pretty well. Your mileage may vary.