anchor.diff:      ibrowse:stream_next(S#state.reqid);
   maybe_stream_next(_) ->
       timer:cancel(get(timeout)).
  -
  -start_http_request(RawUrl) ->
  -    Url = ibrowse_lib:parse_url(RawUrl),
  -    {ok, Pid} = ibrowse:spawn_link_worker_process(Url#url.host, Url#url.port),
  -    Opts = [
  -        {stream_to, {self(), once}},
  -        {inactivity_timeout, 31000},
  -        {response_format, binary}
  -    ],
  -    {ibrowse_req_id, Id} =
  -        ibrowse:send_req_direct(Pid, RawUrl, [], get, [], Opts, infinity),
  -    {Pid, Id}.
  
positive.code:         resource = "_changes",
          qs = QS,
          conn = Pid,
          options = [{stream_to, {self(), once}}, {response_format, binary}],
          headers = Source#http_db.headers -- [{"Accept-Encoding", "gzip"}]
      },
      {ibrowse_req_id, ReqId} = couch_rep_httpc:request(Req),
  
      receive
      {ibrowse_async_headers, ReqId, "200", _} ->
  
negative.code: handle_headers(200, _, State) ->
      maybe_stream_next(State),
      {noreply, State};
  handle_headers(Code, Hdrs, #state{init_args = InitArgs} = State)
          when Code =:= 301 ; Code =:= 302 ->
      catch ibrowse:stop_worker_process(State#state.conn),
      [Parent, #http_db{url = Url1} = Source, Since, PostProps] = InitArgs,
      Url = couch_rep_httpc:redirect_url(Hdrs, Url1),
      Source2 = couch_rep_httpc:redirected_request(Source, Url),
      Pid2 = couch_rep_httpc:spawn_link_worker_process(Source2),
      Source3 = Source2#http_db{conn = Pid2},
      {ibrowse_req_id, ReqId} = couch_rep_httpc:request(Source3),
      InitArgs2 = [Parent, Source3, Since, PostProps],
      {noreply, State#state{conn=Pid2, reqid=ReqId, init_args=InitArgs2}};
  handle_headers(Code, Hdrs, State) ->
      ?LOG_ERROR("replicator changes feed failed with code ~s and Headers ~n~p",
          [Code,Hdrs]),
  