never; ultimately this was a mistake. The correct way to iterate a sequence more than once is to call .GetEnumerator() again – i.e. use foreach again. If your data is non-repeatable (or expensive to repeat), buffer it via .ToList() or similar.
It is a formal requirement in the language spec that iterator blocks throw exceptions for this method. As such, you cannot rely on it working. Ever.