private void Subscribe(IConnection connection, IIdsDispenser dispenser, SearchRequest request) { CodeContract.Requires(connection != null); CodeContract.Requires(dispenser != null); var requestId = dispenser.NextRequestId(); this.subscriptions = new List<IDisposable> { connection.Subscribe((ContractDataMessage message) => message.RequestId == requestId, this.OnContractDataMessage), connection.Subscribe((ContractDataEndMessage message) => message.RequestId == requestId, this.OnContractDataEndMessage), connection.SubscribeForRequestErrors(requestId, this.OnError) }; SendRequest(request, requestId, connection); }