gentab.js
function asyncifyFunctions(forms) {
  // for each subexpression form...
  forms.forEach(function(form) {
    if (sl.isList(form)) {
      if(sl.typeOf(form[0]) === 'symbol' &&
        sl.valueOf(form[0]) === 'function' &&
        asyncNeeded(form)) {
          form.unshift(sl.atom("async"));
          asyncifyFunctions(form);
      }
      else {
        asyncifyFunctions(form);
      }
    }
  });
}
function asyncifyFunctions(forms) {
  // for each subexpression form...
  forms.forEach(function(form) {
    if (sl.isList(form)) {
      if(sl.typeOf(form[0]) === 'symbol' &&
        sl.valueOf(form[0]) === 'function' &&
        asyncNeeded(form)) {
          form.unshift(sl.atom("async"));
          asyncifyFunctions(form);
      }
      else {
        asyncifyFunctions(form);
      }
    }
  });
}
function asyncifyFunctions ( forms ) { // for each subexpression form... forms . forEach ( function ( form ) { if ( sl . isList ( form ) ) { if ( sl . typeOf ( form [ 0 ] ) === 'symbol' && sl . valueOf ( form [ 0 ] ) === 'function' && asyncNeeded ( form ) ) { form . unshift ( sl . atom ( "async" ) ) ; asyncifyFunctions ( form ) ; } else { asyncifyFunctions ( form ) ; } } } ) ; }
Had to timebox this - double check it later - I've yet to handle functions nested down under other functions - in that case isn't co.wrap needed to be added both at the lowest level and at the higher levels?  Right now I stop at the higher levels.
Had to timebox this - double check it later - I ve yet to handle functions nested down under other functions - in that case isn t co . wrap needed to be added both at the lowest level and at the higher levels? Right now I stop at the higher levels .