public void Handle <TResponse>(Action <TResponse> handler) where TResponse : class { var connector = new RequestHandlerSubscriptionConnector <TResponse>(); Action <TResponse> responseHandler = message => { try { handler(message); _request.Complete(message); } catch (Exception ex) { var exception = new RequestException("The response handler threw an exception", ex, message); _request.Fail(exception); } }; _handlers.Add( x => { return(connector.Connect(x, _requestId, HandlerSelector.ForHandler(responseHandler))); }); }