ensure done_handler is called
more importantly, ensure it gets called only once by taks run