> Also, maybe the behavior or #all should be changed?

Agreed. I think it should always return an Array (like the documentation in `Base::all` states). I also generally think it is odd when APIs can return two disparate types depending on the scenario. I'm changing this now to always return an array.

I'm still thinking through this more, but the `all` method is weird in other ways. For instance, by default all actually returns the *first* item. I feel like this violates the principle of least surprise as I would expect a method named `all` to either return *all* items or perhaps behave like `Enumerable#all?`. Maybe a better name for this method would be `slice`? We could deprecate the current `all` method if passivity is a concern (not sure how many breaking changes are allowed in 2.0.0). At any rate, I'll make that another issue/pr.