more robust error handling

fixes `Generator is already running` errors, specifically #48. most likely fixes errors i've been seeing in koa and stuff.

you probably want to fiddle with it a little bit. i'm pretty sure performance is going to go way down.