@masarakki can you think of any reason why we can't use `#try`?  For example:

        reason = case
          when access_token.try(:revoked?)
            :revoked
          when access_token.try(:expired?)
            :expired
          else
            :unknown
          end

The tests pass for me with that logic.