anchor.diff:      try binary_to_term(Data) of
           {'C', Module, Function, Args} when is_atom(Module), is_atom(Function),
                   is_list(Args) ->
  -            Pid = proc_lib:spawn_link(fun () ->
  -                exit(try {ok, apply(Module, Function, Args)}
  -                    catch
  -                        Type:Reason ->
  -                            Trace = erlang:get_stacktrace(),
  -                            {error, {erlang, Type, Reason, Trace}}
  -                    end)
  -                end),
  +            Pid = spawn_call(Module, Function, Args),
               Info = {Pid, erlport_utils:start_timer(Timeout)},
               {next_state, StateName, State#state{call=Info}};
           's' ->
  
positive.code:             erlport_utils:handle_response(call, {error, Error}, State,
                  StateName);
          {'P', StdoutData} ->
              ok = io:put_chars(StdoutData),
              {next_state, StateName, State};
          Response ->
              {stop, {invalid_response, Response}, State}
      catch
  
negative.code:         {empty, Queue} ->
              ok
      end.
  
  call(Pid, Request) ->
      case gen_fsm:sync_send_event(Pid, Request, infinity) of
          {ok, Result} ->
              Result;
          {error, Error} ->
              erlang:error(Error)
      end.
  
  print(Data, StateName, State) ->
      ok = io:put_chars(Data),
      {next_state, StateName, State}.
  
  spawn_call(Module, Function, Args) ->
      proc_lib:spawn_link(fun () ->
          exit(try {ok, apply(Module, Function, Args)}
              catch
                  Type:Reason ->
                      Trace = erlang:get_stacktrace(),
                      {error, {erlang, Type, Reason, Trace}}
              end)
          end).
  