Fix Error handling for generator

A generator raising an exception will now correctly emit an `error` event.
This can be used in unit test as the error event is now binded between the generator and its run context. 
Here we'll call done the first time this method is called. This mean one of the process object listeners won't be restored.