code: function(callback,onEnd){
  			//because next function is changing, we can't go this.next.bind(this)
  			S.asyncWhile(function(){ this.next.apply(null,arguments); }.bind(this),callback,function(){
  				this.close();
  				onEnd && onEnd();
  			}.bind(this));
  		}
docs: /*next: ,