anchor.diff:          ibrowse:stream_next(ReqId),
           {ok, #state{conn=Pid, last_seq=Since, reqid=ReqId, init_args=Args}};
       {ibrowse_async_headers, ReqId, Code, Hdrs} when Code=="301"; Code=="302" ->
  -        catch ibrowse:stop_worker_process(Pid),
  +        stop_link_worker(Pid),
           Url2 = couch_rep_httpc:redirect_url(Hdrs, Req#http_db.url),
           Req2 = couch_rep_httpc:redirected_request(Req, Url2),
           Pid2 = couch_rep_httpc:spawn_link_worker_process(Req2),
  
positive.code:             {stop, changes_timeout}
          end;
      {ibrowse_async_headers, ReqId, "404", _} ->
          catch ibrowse:stop_worker_process(Pid),
          ?LOG_INFO("source doesn't have _changes, trying _all_docs_by_seq", []),
          Self = self(),
          BySeqPid = spawn_link(fun() -> by_seq_loop(Self, Source, Since) end),
  
negative.code:     ?LOG_ERROR("changes_loop died with reason ~p", [Reason]),
      {stop, changes_loop_died, 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
  