code: function bindAsync(left, arg) {
          if (opts.es6target && !left.id && !arg && left.type.indexOf("Function") === 0) {
              left.type = 'ArrowFunctionExpression';
              return left;
          }
          if (opts.noRuntime) {
              if (arg) {
                  if (examine(arg).isLiteral) {
                      throw new Error("Nodent: 'noRuntime' option only compatible with -promise and -engine modes");
                  }
                  // Add a global synchronous exception handler to (left)
                  left.body.body = parsePart("try {$:0} catch($2) {return $1($2)}", [cloneNode(left.body),
                      arg,ident('$boundEx')]).body;
              } else if (opts.es6target && !left.id && left.type.indexOf("Function") === 0) {
                  left.type = 'ArrowFunctionExpression';
                  return left;
              }
              if (opts.es6target && !left.id) {
                  left.type = 'ArrowFunctionExpression';
                  return left;
              }
              if (containsThis(left)) 
                  return parsePart("$0.bind(this)", [left]).expr;
              return left;
          }
          var subst = {
              runtime: genIdent.runtime,
              asyncbind: genIdent.asyncbind,
              fn: left,
              arg: arg
          };
          if (opts.$runtime) {
              if (arg) {
                  return parsePart("$runtime.$asyncbind.call($fn,this,$arg)", subst).expr;
              } else {
                  if (opts.lazyThenables || containsThis(left)) 
                      return parsePart("$runtime.$asyncbind.call($fn,this)", subst).expr;
                  return left;
              }
          } else {
              if (arg) {
                  return parsePart("$fn.$asyncbind(this,$arg)", subst).expr;
              } else {
                  if (opts.lazyThenables || containsThis(left)) 
                      return parsePart("$fn.$asyncbind(this)", subst).expr;
                  return left;
              }
          }
      }
docs: /* Generate a prototypical call of the form:
  (left).$asyncbind(this,...args)