Indeed, I had to ensure that `physical_unit._to(functional_unit)` would always give a `UnitsError` (since it has to go through the equivalency, and should be checked for physical unit of `u.mag`.)

But looking more closely here, perhaps I went too far in the duck-typing route; for now a `if instance(other, UnitBase)` would do. Happy to change that, though maybe best considered as part of the ABC question above.