diff --git a/lib/runner/run.js b/lib/runner/run.js
index <HASH>..<HASH> 100644
--- a/lib/runner/run.js
+++ b/lib/runner/run.js
@@ -67,10 +67,13 @@ _.extend(Run.prototype, {
             return callback(new Error('run: already running'));
         }
 
-        _.isFinite(_.get(this.options, 'timeout.global')) &&
-            backpack.timeback(callback, this.options.timeout.global, this, function () {
+        var timeback = callback;
+
+        if (_.isFinite(_.get(this.options, 'timeout.global'))) {
+            timeback = backpack.timeback(callback, this.options.timeout.global, this, function () {
                 this.pool.clear();
             });
+        }
 
         // invoke all the initialiser functions one after another and if it has any error then abort with callback.
         async.series(_.map(Run.initialisers, function (initializer) {
@@ -81,7 +84,7 @@ _.extend(Run.prototype, {
             // save the normalised callbacks as triggers
             this.triggers = callback;
             this.triggers.start(null, this.state.cursor.current()); // @todo may throw error if cursor absent
-            this._process(callback);
+            this._process(timeback);
         }.bind(this));
     },
ensure that the timeout is respected and used