oknow.js
function(err) {
		/**
		 * If err is an Error object, break the chain and call catch
		 */
		if (err && (err.constructor.name === "Error" || err.constructor.name === "TypeError") && this.onCatch) {
			this.onCatch(err);
			return;
		}

		var nextFn = this.fnStack.shift();
		if (nextFn) {
			/**
			 * Ensure arguments are passed as an Array
			 */
			var args = Array.prototype.slice.call(arguments);
			return this.execute(nextFn.fn, args);
		}
	}
function(err) {
		/**
		 * If err is an Error object, break the chain and call catch
		 */
		if (err && (err.constructor.name === "Error" || err.constructor.name === "TypeError") && this.onCatch) {
			this.onCatch(err);
			return;
		}

		var nextFn = this.fnStack.shift();
		if (nextFn) {
			/**
			 * Ensure arguments are passed as an Array
			 */
			var args = Array.prototype.slice.call(arguments);
			return this.execute(nextFn.fn, args);
		}
	}
function ( err ) { /**
		 * If err is an Error object, break the chain and call catch
		 */ if ( err && ( err . constructor . name === "Error" || err . constructor . name === "TypeError" ) && this . onCatch ) { this . onCatch ( err ) ; return ; } var nextFn = this . fnStack . shift ( ) ; if ( nextFn ) { /**
			 * Ensure arguments are passed as an Array
			 */ var args = Array . prototype . slice . call ( arguments ) ; return this . execute ( nextFn . fn , args ) ; } }
Calls the next function in queue, or calls the function passed in `catch` if error occurs
@param  {Error}   err Error object optionally passed
@return {Promise}     Return self for chaining
Calls the next function in queue or calls the function passed in catch if error occurs