fix infinite loop caused by Underscore.iter

eg.
`
for i in Underscore.iter(list) do
    do_comething()
end
`
above code may cause infinite loop, because when the coroutine.yield in
coroutne.wrap all yielded, the coroutine.resume still return `false,
“some coroutine error (coroutine is dead)” ` and the coroutine.wrap
pass the error msg to `i`. so the FOR loop will NOT stop, as it never
receive a `nil` value pass to `i`.