Aaron, you are right. It was not so difficult to define eval() in ReciprocalTrigonometricFunction. I had to add 2 attributes for odd (csc)/even(sec)  function detection.   Maybe for another future enhancement,  this generic trigonometric eval() code could me moved up to TrigonometricFunction base class, and removed from sin, cos, tan, etc.

    @classmethod
    def eval(cls, arg):
        if arg.could_extract_minus_sign():
            if cls._is_reciprocal_even:
                return cls(-arg)
            if cls._is_reciprocal_odd:
                return -cls(-arg)

        pi_coeff = _pi_coeff(arg)
        if (pi_coeff is not None
            and not (2*pi_coeff).is_integer
            and pi_coeff.is_Rational):
                q = pi_coeff.q
                p = pi_coeff.p % (2*q)
                if p > q:
                    narg = (pi_coeff - 1)*S.Pi
                    return -cls(narg)
                if 2*p > q:
                    narg = (1 - pi_coeff)*S.Pi
                    return -cls(narg)
        t = cls._inverse_of.eval(arg)
        return 1/t if t != None else t