Shouldn't this be `with iterable as iterable`? (Or use 2 names; it doesn't matter. What I mean is that we shouldn't assume that the context manager's `__enter__` returns `self`.