anchor.diff:                        "   {qfun, Function :: function()}~n"
                         "   {jsanon, {Bucket :: binary(), Key :: binary()}}~n"
                         "   {jsanon, Source :: binary()}~n"
  -                      "   {jsfun, Name :: binary()}~n",
  +                      "   {jsfun, Name :: binary()}~n"
  +                      "   {strfun, Source :: string()}~n"
  +                      "   {strfun, {Bucket :: binary(), Key :: binary()}}~n",
                         [?MODULE])}
       end;
   validate_arg(Other) ->
  
positive.code: 
  -define(DEFAULT_JS_RESERVE_ATTEMPTS, 10).
  
  %% @doc Init just stashes everything for later.
  -spec init(riak_pipe_vnode:partition(), riak_pipe_fitting:details()) ->
           {ok, state()}.
  init(Partition, #fitting_details{arg={Phase, Arg}}=FittingDetails) ->
      case init_phase(Phase) of
          {ok, LocalPhase} ->
  
negative.code: %% extract keydata from the input
  erlang_keydata({_OkError, _Input, KeyData}) -> KeyData.
  
  %% @doc Evaluate Javascript map functions ... if the input is ok.
  map_js(_JS, _Arg, {{error, notfound}, {Bucket, Key}, KeyData}) ->
      {ok, [{not_found,
             {Bucket, Key},
  