let _ = require( 'wTools' ); _.include( 'wFiles' ); _.include( 'wConsequence' ); program(); function program() { var con = _.Consequence(); con.then( function callback1( arg ) { console.log( 'sourcePath::callback1 ' + _.procedure.activeProcedure._sourcePath ); return 'callback1'; } ) con.then( function callback2( arg ) { console.log( 'sourcePath::callback2 ' + _.procedure.activeProcedure._sourcePath ); throw _.error.err( 'callback2' ); return 'callback2'; } ) _.time.out( 100, function timeOut1() { console.log( 'sourcePath::timeout ' + _.procedure.activeProcedure._sourcePath ); con.take( 'timeout1' ); } ); console.log( 'sourcePath::program ' + _.procedure.activeProcedure._sourcePath ); } /* In case of consequences native async stack is wrong. Synthetic async stack is has proper information for each callback of consequence. */