anchor.diff:      gen_server:start_link(couch_work_queue, Options, []).
   
   
  +queue(Wq, Item) when is_binary(Item) ->
  +    gen_server:call(Wq, {queue, Item, byte_size(Item)}, infinity);
   queue(Wq, Item) ->
  -    gen_server:call(Wq, {queue, Item}, infinity).
  +    gen_server:call(Wq, {queue, Item, byte_size(?term_to_bin(Item))}, infinity).
   
   
   dequeue(Wq) ->
  
positive.code:         {reply, ok, Q}
      end;
  
  handle_call({queue, Item}, _From, #q{work_waiters = [{W, _Max} | Rest]} = Q) ->
      gen_server:reply(W, {ok, [Item]}),
      {reply, ok, Q#q{work_waiters = Rest}};
  
  
negative.code:     lists:foreach(fun({W, _}) -> gen_server:reply(W, closed) end, Workers).
  
      
  handle_call({queue, Item, Size}, From, #q{work_waiters = []} = Q0) ->
      Q = Q0#q{size = Q0#q.size + Size, % increment_queue_size(Q0, Item),
                  items = Q0#q.items + 1,
                  queue = queue:in({Item, Size}, Q0#q.queue)},
      case (Q#q.size >= Q#q.max_size) orelse
              (Q#q.items >= Q#q.max_items) of
      true ->
  