public void AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack, object state, ITransportHeaders responseHeaders, Stream responseStream) { // parameters validation if (sinkStack == null) { throw new ArgumentNullException("sinkStack"); } if (responseHeaders == null) { throw new ArgumentNullException("responseHeaders"); } if (responseStream == null) { throw new ArgumentNullException("responseStream"); } IMethodCallMessage methodCall = state as IMethodCallMessage; if (methodCall == null) { throw new NotSupportedException(); } IMethodReturnMessage methodReturn; try { // deserialize response methodReturn = _formatter.DeserializeResponse(methodCall, responseHeaders, responseStream); responseStream.Close(); } catch (Exception ex) { methodReturn = new ReturnMessage(ex, methodCall); } // dispatch response sinkStack.DispatchReplyMessage(methodReturn); }