There could be error during execution, either because internal problem or invalid query (for example skip with expression evaluated to zero or negative int). We need to think about how we want to throw and capture execution errors. Exception is one way, but I'm not sure whether it's the best.