anchor.diff:      Size = size(Data),
       {Size, [ibrowse_lib:dec2hex(8, Size), "\r\n", Data, "\r\n"]}.
   
  -upload_docs({start, Docs}) ->
  +upload_docs({start, W, Docs}) ->
       {Size, Chunk} = make_chunk(<<"{\"new_edits\":false, \"docs\":[">>),
  -    {ok, Chunk, {continue, Docs, "", Size}};
  -upload_docs({continue, Docs, _, ByteCount}) when ByteCount > ?MAX_BYTES ->
  -    put(docs_remaining, Docs),
  +    {ok, Chunk, {continue, W, Docs, "", Size}};
  +upload_docs({continue, W, Docs, _, ByteCount}) when ByteCount > ?MAX_BYTES ->
  +    W ! {docs_remaining, length(Docs)},
       {ok, "2\r\n]}\r\n", last_chunk};
  -upload_docs({continue, [Doc|Rest], Prepend, ByteCount}) ->
  +upload_docs({continue, W, [Doc|Rest], Prepend, ByteCount}) ->
       JsonDoc = ?JSON_ENCODE(couch_doc:to_json_obj(Doc, [revs,attachments])),
       {Size, Chunk} = make_chunk([Prepend, JsonDoc]),
  -    {ok, Chunk, {continue, Rest, ",", ByteCount+Size}};
  -upload_docs({continue, [], _, _}) ->
  +    {ok, Chunk, {continue, W, Rest, ",", ByteCount+Size}};
  +upload_docs({continue, W, [], _, _}) ->
  +    W ! {docs_remaining, 0},
       {ok, "2\r\n]}\r\n", last_chunk};
   upload_docs(last_chunk) ->
       {ok, "0\r\n\r\n", finish};
   upload_docs(finish) ->
  +    couch_util:should_flush(),
       eof.
       
   writer_loop(Parent, Reader, Target) ->
  
positive.code:         end,
          Parent ! {writer_checkpoint, HighSeq},
          couch_rep_att:cleanup(),
          writer_loop(Parent, Reader, Target)
      end.
  
  
negative.code:     ErrorsJson = couch_rep_httpc:request(Db#http_db{
          resource = "_bulk_docs",
          method = post,
          body = {fun upload_docs/1, {start, self(), Docs}},
          headers = [{"transfer-encoding", "chunked"} | Db#http_db.headers]
      }),
      ErrorsList =
  