¿Error dinámico del sistema?

Mientras jugaba con la dinámica C # 4.0, encontré cosas extrañas que suceden con el código como este:

using System.Dynamic;

sealed class Foo : DynamicObject
{
    public override bool TryInvoke(
        InvokeBinder binder, object[] args, out object result)
    {
        result = new object();
        return true;
    }

    static void Main()
    {
        dynamic foo = new Foo();

        var t1 = foo(0);
        var t2 = foo(0);
        var t3 = foo(0);
        var t4 = foo(0);
        var t5 = foo(0);
    }
}

Ok, funciona pero ... mira la ventana de IntelliTrace:

captura de pantalla http://img717.imageshack.us/img717/4914/10435230.png

Por lo tanto, cada invocación (y otras operaciones también en objetos dinámicos) provoca dos veces extrañas excepciones.

Entiendo que a veces se puede usar un mecanismo de excepciones para las optimizaciones, por ejemplo, la primera llamada a la dinámica se puede realizar a algún delegado de código auxiliar, que simplemente arroja una excepción: esto puede ser como una señal para la carpeta dinámica para resolver un miembro correcto y volver a apuntar delegar. La próxima llamada al mismo delegado se realizará sin ninguna verificación.

Pero ... el comportamiento del código anterior se ve muy extraño. Quizás lanzar y capturar excepciones dos veces por cada operación en DynamicObject, ¿es un error?