When you have a filter with a parameter that is a **{variable}**, Dust creates a second body to evaluate the variable and registers a function to handle that evaluation:

    return chk.reference(ctx.get("foo"), ctx, "h", [
      ["link_to", body_1]
    ]);

This bit of code, specifically line 115, evaluates the body with a fresh Chunk and then grabs the result to pass along to the filter. It's basically resolving the variable parameter into a literal. Let me know if there's a Dust-ism I missed that does this in a better manner.