index.js
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]);
            }
        }
    }
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]);
            }
        }
    }
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 ] ) ; } } }
Resolver function, yields a promised value to handlers
Resolver function yields a promised value to handlers