anchor.diff:  
   %% @type dispfail() = {no_dispatch_match, pathtokens()}.
   
  -try_host_binding([], Host, Port, Path, _Depth, _RD) ->
  -    {no_dispatch_match, {Host, Port}, Path};
  -try_host_binding([Dispatch|Rest], Host, Port, Path, Depth, RD) ->
  +try_host_binding(Dispatch, Host, Port, Path, Depth, RD) ->
  +    %% save work during each dispatch attempt by reversing Host up front
  +    try_host_binding1(Dispatch, lists:reverse(Host), Port, Path, Depth, RD).
  +
  +try_host_binding1([], Host, Port, Path, _Depth, _RD) ->
  +    %% Host was reversed inbound, correct it for result
  +    {no_dispatch_match, {lists:reverse(Host), Port}, Path};
  +try_host_binding1([Dispatch|Rest], Host, Port, Path, Depth, RD) ->
       {{HostSpec,PortSpec},PathSpec} =
           case Dispatch of
               {{H,P},S} -> {{H,P},S};
  
positive.code:     case bind_port(PortSpec, Port, []) of
          {ok, PortBindings} ->
              case bind(lists:reverse(HostSpec), Host, PortBindings, 0) of
                  {ok, HostRemainder, HostBindings, _} ->
                      case try_path_binding(PathSpec, Path, HostRemainder, Port, HostBindings, Depth, RD) of
                          {Mod, Props, PathRemainder, PathBindings,
                           AppRoot, StringPath} ->
                              {Mod, Props, HostRemainder, Port, PathRemainder,
                               PathBindings, AppRoot, StringPath};
                          {no_dispatch_match, _} ->
                              try_host_binding(Rest, Host, Port, Path, Depth, RD)
                      end;
                  fail ->
                      try_host_binding(Rest, Host, Port, Path, Depth, RD)
              end;
          fail ->
              try_host_binding(Rest, Host, Port, Path, Depth, RD)
      end.
  
  bind_port(Port, Port, Bindings) -> {ok, Bindings};
  
negative.code:                 {{['*',"bar"],'*'}, [{["d"],t,u}]}],
      ?assertEqual({x, y, [], 80, [], [], ".", ""},
                   try_host_binding(Dispatch,
                                    ["foo","bar"], 80, ["a"], 0, RD)),
      ?assertEqual({z, q, [], 80, [], [{foo,"baz"}], ".", ""},
                   try_host_binding(Dispatch,
                                    ["baz","bar"], 80, ["b"], 0, RD)),
      {Mod, Props, HostRemainder, Port, PathRemainder,
       PathBindings, AppRoot, StringPath}=
          try_host_binding(Dispatch, ["quux","bar"], 1234, ["c"], 0, RD),
      ?assertEqual(r, Mod),
      ?assertEqual(s, Props),
      ?assertEqual("", HostRemainder),
  