Resume a Lua coroutine a fixed number of times and label the coordination state from the resume count and final coroutine status.

Coroutine Resume Coordination Report

coroutine_resume.lua
local resumes = 
local yields = 2
local steps = 0
local co_status = "suspended"

for attempt = 1, resumes do
  if attempt <= yields then
    steps = steps + 1
  else
    co_status = "dead"
  end
end

local report_status = "primed"
if co_status == "dead" then
  report_status = "drained"
elseif steps >= 2 then
  report_status = "flowing"
end

print("resumes=" .. resumes .. " steps=" .. steps .. " status=" .. report_status)
local resumes = 
local yields = 2
local steps = 0
local co_status = "suspended"

for attempt = 1, resumes do
  if attempt <= yields then
    steps = steps + 1
  else
    co_status = "dead"
  end
end

local report_status = "primed"
if co_status == "dead" then
  report_status = "drained"
elseif steps >= 2 then
  report_status = "flowing"
end

print("resumes=" .. resumes .. " steps=" .. steps .. " status=" .. report_status)
local resumes = 
local yields = 2
local steps = 0
local co_status = "suspended"

for attempt = 1, resumes do
  if attempt <= yields then
    steps = steps + 1
  else
    co_status = "dead"
  end
end

local report_status = "primed"
if co_status == "dead" then
  report_status = "drained"
elseif steps >= 2 then
  report_status = "flowing"
end

print("resumes=" .. resumes .. " steps=" .. steps .. " status=" .. report_status)
coroutine resume A coroutine yields control on each step and resumes deterministically, so the resumed-step count and the final status stay scalar.