diff --git a/lib/worker_wrapper.js b/lib/worker_wrapper.js
index <HASH>..<HASH> 100644
--- a/lib/worker_wrapper.js
+++ b/lib/worker_wrapper.js
@@ -179,6 +179,15 @@ WorkerWrapper = EventEmitterEx.create(function WorkerWrapper(master, options) {
     this.restarting = false;
 
     /**
+     * Indicates worker stopping in progress.
+     * Changing `stopping` property value outside WorkerWrapper and it inheritors is not recommended.
+     * @property {Boolean} stopping
+     * @memberOf {WorkerWrapper}
+     * @public
+     */
+    this.stopping = false;
+
+    /**
      * Worker can be marked as dead on sequential fails of launch attempt.
      * Dead worker will not be restarted on event WorkerWrapper#state('stopped').
      * Internally in the WorkerWrapper worker can be marked as dead, but never go alive again.
@@ -421,9 +430,11 @@ WorkerWrapper.prototype._onStateStopped = function() {
 
     // start worker again if it persistent or in the restarting state
     // and isn't marked as dead
-    if ((this.options.persistent || this.restarting) && ! this.dead) {
+    if ((this.options.persistent || this.restarting) && ! this.dead && ! this.stopping) {
         legacy.setImmediate(this.run.bind(this));
     }
+
+    this.stopping = false;
 };
 
 /**
@@ -533,6 +544,8 @@ WorkerWrapper.prototype.stop = function() {
         return this;
     }
 
+    this.stopping = true;
+
     var self = this;
 
     legacy.setImmediate(function() {
prevent workers from being respawned on WorkerWrapper#stop()