public async Task <IServiceChannelDispatcher> CreateServiceChannelDispatcherAsync(IChannel outerChannel) { //TODO should have better logic //Initialization path start if (outerChannel.ChannelDispatcher == null) { TypedChannelDemuxer typedChannelDemuxer = ChannelBuilder.GetTypedChannelDemuxer <IReplyChannel>(); IServiceChannelDispatcher channelDispatcher = await typedChannelDemuxer.CreateServiceChannelDispatcherAsync(outerChannel); return(channelDispatcher); } //initialization end //Below dispatches all SCT call for first time for all clients else { IServiceChannelDispatcher securityReplyChannelDispatcher = await GetInnerChannelDispatcherAsync(outerChannel); return(securityReplyChannelDispatcher); } }