coroutine.create(b.info())
calls b.info
before resuming co
.
You need to pass a function, not a function call, as in
local co = coroutine.create(b.info)
coroutine.resume(co) -- prints nothing
coroutine.resume(co) -- prints b, b2
or
co = coroutine.wrap(b.info)
co()
co()