Final solution:
function collectat(iter, inds)
if isempty(inds)
eltype(iter)[]
else
m = maximum(inds)
e = Iterators.enumerate(iter)
w = Iterators.takewhile(x -> (first(x) ≤ m), e)
f = Iterators.filter(x -> (first(x) ∈ inds), w)
map(last, f)
end
end