code: function mapCondOp(ast, state) {
          if (Array.isArray(ast)) 
              return ast.map(function (n) {
              return mapCondOp(n, state);
          });
          treeWalk(ast, function (node, descend, path) {
              descend();
              if (node.type === 'ConditionalExpression' && (containsAwait(node.alternate) || containsAwait(node.consequent))) {
                  var z = ident(generateSymbol("condOp"));
                  var xform = internalIIAFE(parsePart("if ($0) return $1 ; return $2", [node.test,
                      node.consequent,node.alternate]).body);
                  coerce(node, xform);
              }
          }, state);
          return ast;
      }
docs: /*
  To implement conditional execution, a?b:c is mapped to
  
  await (async function(){ if (a) return b ; return c })
  
  Note that 'await (async function(){})()' can be optimized to a Thenable since no args are passed