public async Task <FabricTransportMessage> RequestResponseAsync(FabricTransportRequestContext requestContext, FabricTransportMessage fabricTransportMessage) { if (null != this.serviceRemotingPerformanceCounterProvider.serviceOutstandingRequestsCounterWriter) { this.serviceRemotingPerformanceCounterProvider.serviceOutstandingRequestsCounterWriter .UpdateCounterValue(1); } var requestStopWatch = Stopwatch.StartNew(); var requestResponseSerializationStopwatch = Stopwatch.StartNew(); try { var remotingRequestMessage = this.CreateRemotingRequestMessage(fabricTransportMessage, requestResponseSerializationStopwatch ); var retval = await this.remotingMessageHandler.HandleRequestResponseAsync( new FabricTransportServiceRemotingRequestContext(requestContext, this.serializersManager), remotingRequestMessage); return(this.CreateFabricTransportMessage(retval, remotingRequestMessage.GetHeader().InterfaceId, requestResponseSerializationStopwatch)); } catch (Exception ex) { ServiceTrace.Source.WriteInfo("FabricTransportMessageHandler", "Remote Exception occured {0}", ex); return(this.CreateFabricTransportExceptionMessage(ex)); } finally { fabricTransportMessage.Dispose(); if (null != this.serviceRemotingPerformanceCounterProvider.serviceOutstandingRequestsCounterWriter) { this.serviceRemotingPerformanceCounterProvider.serviceOutstandingRequestsCounterWriter .UpdateCounterValue(-1); } if (null != this.serviceRemotingPerformanceCounterProvider.serviceRequestProcessingTimeCounterWriter) { this.serviceRemotingPerformanceCounterProvider.serviceRequestProcessingTimeCounterWriter .UpdateCounterValue( requestStopWatch.ElapsedMilliseconds); } } }