And I would like a language change that made a number of common iterable objects "chainable" without the wrapper. This wrapper could of course be used as a decorator too.
E.g. generator comprehensions, things returned by itertools functions, range(), enumerate(), zip(), etc. This wouldn't promise that EVERY iterable or iterator had that "chainable" behavior, but it would cover 90% of the use cases. And I wouldn't find it confusing because the leftmost object would be the one determining the behavior, which feels more intuitive and predictable.