Is there a particular reason channels don't support metadata? Or just it was never done?
I think it's related to the fact that metadata makes more sense as something you "pair with" immutable data, rather than something like a channel which isn't immutable. Like, calling with-meta on a map returns a "new" map with that metadata, but if calling with-meta on a channel returned a new channel would be pretty awkward, and likely not what you want. It could be done the way atoms do it, e.g. with another arg to chan, but my guess is it was decided the juice wasn't worth the squeeze for that by the time core async came along
There have been a handful of times where I was reaching for metadata when, in reality, my actual data model just needed to change. Anytime I've needed to associate data with a channel, I've just put the channel inside a map at that point.
If you've hit a use case where that won't suffice, I'd be very curious to hear more about it.
@jjttjj Atom and other reference type support meta as well using reset-meta and alter-meta