docs: function buf_array() {
  	var bufs = [], blksz = 2048;
  	var newblk = function ba_newblk(sz) {
  		var o = (new_buf(sz));
  		prep_blob(o, 0);
  		return o;
  	};
  
  	var curbuf = newblk(blksz);
  
  	var endbuf = function ba_endbuf() {
  		if(!curbuf) return;
  		if(curbuf.length > curbuf.l) curbuf = curbuf.slice(0, curbuf.l);
  		if(curbuf.length > 0) bufs.push(curbuf);
  		curbuf = null;
  	};
  
  	var next = function ba_next(sz) {
  		if(curbuf && sz < curbuf.length - curbuf.l) return curbuf;
  		endbuf();
  		return (curbuf = newblk(Math.max(sz+1, blksz)));
  	};
  
  	var end = function ba_end() {
  		endbuf();
  		return __toBuffer([bufs]);
  	};
  
  	var push = function ba_push(buf) { endbuf(); curbuf = buf; next(blksz); };
  
  	return ({ next:next, push:push, end:end, _bufs:bufs });
  }