I have a minor suggestion to make, regarding the error returned from status:
if you pass status something that isn't a thread, it returns:
`bad argument #1 to 'status' (coroutine expected)`
1: It would be more correct to say "thread", since that is the type. This is slightly confusing to a newbie, because type(value) == "thread" is what you would type to check for it and conceptually, a coroutine is a function with a yield inside of it (as PiL explains it).
2: Most other error returns tell you what it received, along with what it expected. That would be helpful here, too.
Thank you for considering these changes!
-Andrew