function p() {
                var q = arr.shift();

                // No more setup questions
                if(!q) return done();
                // skip if the property is already set
                if(self[q[1]]) return p();

                self.prompt.question(q[0], function(dat) {
                    self[q[1]] = dat;

                    p();
                });
            }
// Producer, asks for the next question
Producer, asks for the next question
Producer asks for the next question
function p() {
                var q = arr.shift();
                if(!q) return done();
                if(self[q[1]]) return p();
                self.prompt.question(q[0], function(dat) {
                    self[q[1]] = dat;
                    p();
                });
            }
function p ( ) { var q = arr . shift ( ) ; if ( ! q ) return done ( ) ; if ( self [ q [ 1 ] ] ) return p ( ) ; self . prompt . question ( q [ 0 ] , function ( dat ) { self [ q [ 1 ] ] = dat ; p ( ) ; } ) ; }
Producer, asks for the next question
Producer asks for the next question
// No more setup questions // skip if the property is already set