anchor.diff:      NewTbd = dict:erase({AuthorAndModule, Version}, State#state.tbd),
       {noreply, State#state{ tbd = NewTbd}};
   
  -handle_info({tarball_failed, At, BaseUrl, AuthorAndModule, Version, ErrorType, Reason}, State) ->
  +handle_info({tarball_failed, At, BaseUrl, AuthorAndModule, Version, ErrorType, Reason, StackTrace}, State) ->
       NewTbd = dict:erase({AuthorAndModule, Version}, State#state.tbd),
  -    NewErrors = dict:store({BaseUrl, AuthorAndModule, Version}, {At, {ErrorType, Reason}}, State#state.errors),
  +    NewErrors = dict:store({BaseUrl, AuthorAndModule, Version}, {At, {ErrorType, Reason, StackTrace}}, State#state.errors),
       {noreply, State#state{ tbd = NewTbd, errors = NewErrors}};
   
   handle_info({'EXIT', _Pid, _Reason}, State) ->
  
positive.code: serializable_errors(Errors) ->
      lists:map(fun serializable_error/1, dict:to_list(Errors)).
  
  serializable_error({{BaseUrl, {Author, Module}, Version}, {Now, {Type, Error}}}) ->
      {[
          {base_url, BaseUrl},
          {author, Author}, 
  
negative.code:     Url = binary_to_list(BaseUrl) ++ "/api/v1/releases.json?module="++FullName++"&version="++binary_to_list(Version),
      {ok, {{_, 200, _}, _, RelBody}} = httpc:request(Url),
      {DecodedBody} = jiffy:decode(RelBody),
      Release = case proplists:get_value(list_to_binary(FullName), DecodedBody) of
          [{R}] -> R;
          _ -> throw({no_release, BaseUrl, Author, Module, Version})
      end,
      RemoteFileName = proplists:get_value(<<"file">>, Release),
      {ok, {{_, 200, _}, _, TarBody}} = httpc:request(get, {binary_to_list(BaseUrl) ++ binary_to_list(RemoteFileName), []}, [], [{body_format, binary}]),
      TarBody.
  