anchor.diff:      ?LOG_ERROR("changes_loop died with reason ~p", [Reason]),
       {stop, changes_loop_died, State};
   
  -handle_info({'EXIT', _From, normal}, State) ->
  -    {noreply, State};
  +handle_info({'EXIT', From, Reason}, State) ->
  +    ?LOG_ERROR("changes loop, process ~p died with reason ~p", [From, Reason]),
  +    {stop, {From, Reason}, State};
   
   handle_info(Msg, #state{init_args = InitArgs} = State) ->
       case Msg of
  
positive.code:         conn = Conn
      } = State,
      if is_pid(ChangesPid) -> exit(ChangesPid, stop); true -> ok end,
      if is_pid(Conn) -> catch ibrowse:stop_worker_process(Conn); true -> ok end,
      ok.
  
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
negative.code:     ibrowse:stream_next(S#state.reqid);
  maybe_stream_next(_) ->
      timer:cancel(get(timeout)).
  
  stop_link_worker(Conn) when is_pid(Conn) ->
      unlink(Conn),
      receive {'EXIT', Conn, _} -> ok after 0 -> ok end,
      catch ibrowse:stop_worker_process(Conn);
  stop_link_worker(_) ->
      ok.
  