anchor.diff:         _ ->
              {stop, normal, State#state{queue = [], current_url = []}}
      end;
  -do_download(#state{port = Port} = State) ->
  -    vffov_common:close_downloader_port(Port),
  -    do_download(State#state{port = undefined}).
  +do_download(#state{port = Port, queue = []} = State) ->
  +    try
  +        vffov_common:close_downloader_port(Port)
  +    catch
  +        _:_ -> ignore
  +    end,
  +    {stop, normal, State#state{queue = [], current_url = []}}.
  
positive.code: stop() ->
      gen_server:cast(?MODULE, stop).
  
  %%%============================================================================
  %%% gen_server callbacks
  %%%============================================================================
  init([Queue]) ->
      process_flag(trap_exit, true),
      {ok, #state{queue = queue:from_list(Queue), current_url = undefined}, 0}.
  
  handle_call(Call, From, State) ->
      vffov_common:verbose(error, "Unmatched call ~p from ~p", [Call, From]),
      {reply, invalid_call, State}.
  
negative.code: %% API
  -export([
           start_link/2,
           stop/0,
           get_url/0,
           get_queue/0
          ]).
  
  %% gen_server callbacks
  