I just tested this and you are right - sub-sections used to be distinguishable by a resource_subtype of section but that no longer seems to be the case.
I just reached out to my contacts at Asana and will report back here (or they might) with an update once I have one.
@lpb helpfully reminded me that there is another property you can check that I had forgotten about, is_rendered_as_seperator, which should give you this info. (It’s an opt-in field so you’ll have to use syntax like opt_fields=is_rendered_as_seperator
I think it’s still the case that there was a change to resource_subtype and I’m still following up on that with Asana, but I would say switch to using is_rendered_as_separator in your solution at this point.
Resource subtypes
Currently, separators will indicate that they have resource_subtype: "section". This will be deprecated in favor of is_rendered_as_separator and separators will instead have resource_subtype: "default_task".
It seems that this deprecation of returning default_task for subsections was never actually implemented until very recently, but apparently now it has been. So bottom line is that you should use is_rendered_as_seperator to distinguish a subsection.