takeOne for non-forward ranges