Make `HubInvocationProgress` a static generic class and you won't need a dictionary to cache your createDelegate. This is similar to what I did with TypedClientBuilder<T>.