code: function compose(...mws) {
  	return (req, res, done) => {
  		const next = (i, err) => {
  			if (i >= mws.length) {
  				if (_.isFunction(done))
  					return done.call(this, err);
  
  				/* istanbul ignore next */
  				return;
  			}
  
  			if (err) {
  				// Call only error middlewares (err, req, res, next)
  				if (mws[i].length == 4)
  					mws[i].call(this, err, req, res, err => next(i + 1, err));
  				else
  					next(i + 1, err);
  			} else {
  				if (mws[i].length < 4)
  					mws[i].call(this, req, res, err => next(i + 1, err));
  				else
  					next(i + 1);
  			}
  		};
  
  		return next(0);
  	};
  }
docs: Compose middlewares
  
  @param {...Function} mws