Worker failure

disambiguate `worker.error` from `worker.failure`.  This also prevents the worker from getting stuck when `worker.on('error')` is not defined.