public async Task <T> GetAwaitable <T>(TimeSpan?timeout = null) where T : MultiPlayerMessage { var innerResult = await innerRouter.Await(typeof(T).Name, timeout); return((T)innerResult.Data); }