anchor.diff:          {compile, Src, Target, Config, CompileFn} ->
               case needs_compile(Src, Target) of
                   true ->
  -                    CompileFn(Src, Config),
  -                    QueuePid ! {compiled, Src};
  +                    case catch(CompileFn(Src, Config)) of
  +                        ok ->
  +                            QueuePid ! {compiled, Src},
  +                            compile_worker(QueuePid);
  +                        Error ->
  +                            QueuePid ! {fail, Error},
  +                            ok
  +                    end;
                   false ->
                       ?INFO("Skipping ~s\n", [Src]),
  -                    ok
  -            end,
  -            compile_worker(QueuePid);
  +                    compile_worker(QueuePid)
  +            end;
  +
           empty ->
               ok
       end.
  
positive.code:     rebar_config:get_list(Config, Key, []).
  
  compile_erl(Source, Config) ->
      Opts = [{i, "include"}, {outdir, "ebin"}, report] ++ compile_opts(Config, erl_opts),
      case compile:file(Source, Opts) of
          {ok, _} ->
              ok;
          error ->
              ?FAIL
      end.
  
  
negative.code:                     Worker ! {compile, Src, Target, Config, CompileFn},
                      compile_queue(Pids, Rest, Config, CompileFn)
              end;
  
          {fail, Error} ->
              ?DEBUG("Worker compilation failed: ~p\n", [Error]),
              ?FAIL;
          
          {compiled, Source} ->
              ?CONSOLE("Compiled ~s\n", [Source]),
  