anchor.diff:              complete_old_vb_filter_change(State1)
       end;
   handle_call(had_backfill, From, #state{had_backfill = HadBF} = State) ->
  -    case HadBF#had_backfill.value of
  -        undefined ->
  +    #had_backfill{value = Value,
  +                  backfill_opaque = BFOpaque} = HadBF,
  +    case Value =/= undefined andalso BFOpaque =:= undefined of
  +        true ->
  +            {reply, Value, State};
  +        false ->
               OldWaiters = HadBF#had_backfill.waiters,
               NewBF = HadBF#had_backfill{waiters = [From | OldWaiters]},
  -            {noreply, State#state{had_backfill = NewBF}};
  -        Value ->
  -            {reply, Value, State}
  +            ?rebalance_debug("Suspended had_backfill waiter~n~p", [NewBF]),
  +            {noreply, State#state{had_backfill = NewBF}}
       end;
   handle_call(_Req, _From, State) ->
       {reply, unhandled, State}.
  
positive.code: %% @doc Process a packet from the downstream server.
  -spec process_downstream(<<_:8,_:_*8>>, #state{}) ->
                                  {ok, #state{}}.
  process_downstream(<<?RES_MAGIC:8, _/binary>> = Packet,
                     State) ->
      State#state.upstream_sender ! Packet,
      {ok, State}.
  
  mark_takeover_seen(State) ->
      true = State#state.takeover,
  
negative.code: 
  mark_backfillness(#state{had_backfill = HadBF} = State,
                    Value) when is_boolean(Value) ->
      NewBF = HadBF#had_backfill{value = Value,
                                 backfill_opaque = State#state.last_sent_seqno},
      State#state{had_backfill = NewBF}.
  
  %% @doc Process a packet from the upstream server.
  