docs: function compose(middleware){
  	return function *(next){
  		var i = middleware.length;
  		next = next || function *(){};
  		var mw;
  
  		while (i--) {
  			mw = middleware[i];
  			next = mw.call(this, next);
  		}
  
  		yield *next;
  	}
  }