I think this might be clearer as a generator function that's a method on `ListableAPIResource`. I think this whole class then be something like:

```python
def iter(cls, api_key=None, **params):
  requestor = APIRequestor(api_key)
  url = cls.class_url()
  params['page'] = 1
  while ((response = requestor.request('get', url, params)).data.length != 0):
    for datum in response.data:
      yield datum
    params['page'] += 1
```

(I'm not sure that that's valid syntax with the while loop, but I think you can get the idea?)

This would allow people to access the iterator directly if they so desire. Additionally, I think the `.all` method could then look something like:

```python
def all(cls, api_key=None, **params):
  return list(self.iter(cls, api_key, params))
```