"Use 'next' to iterate or 'rest' to get all results. A cursor is closed when it is explicitly closed, all results have been read from it, garbage collected, or not used for over 10 minutes". It is already possible to shoot yourself in the foot with current API with "next". But using "next" by hand is a pain in the neck when processing a large stream of docs. That's why I think the API should provide a smart function like this one. My attempt may be broken but I'm willing to improve on it :). Making st1 strict is definitely a good idea because one may expect "imperative" style from this function. I'll look at gracefully handling errors happening in the Action.