docs: function traverse(_promise){
  	var c = _promise._chain,
  	    s = _promise._state,
  	    v = _promise._value,
  	    o = _promise._opaque,
  	    t, p, h, r;
  	
          while((t = c.shift())){
  	    p = t[0];
              h = t[s];
  
              if(typeof h === 'function') {
                  try {
                      r = h(v,o);
  		    p.resolve(r,o);
                  } catch(e) {
  		    p.reject(e);
                  }
              } else {
  		p._promise._state = s;
  		p._promise._value = v;
  		p._promise._opaque = o;
  		
  		task(traverse,[p._promise]);
              }
          }
      }