/// <summary>
        /// Removes the response and the request token.
        /// </summary>
        public async Task DeleteResponse(string requestId)
        {
            var responseId = await requestStore.GetResponseId(requestId).ConfigureAwait(false);

            if (responseId != null)
            {
                await responseStore.EnsureDeleted(responseId);
            }
            await requestStore.EnsureDeleted(requestId);
        }
        protected override async Task Publish(string messageId, Guid attemptId,
                                              IEnumerable <HttpResponseRecord> committedSideEffects,
                                              IEnumerable <HttpResponseRecord> abortedSideEffects)
        {
            foreach (var record in abortedSideEffects)
            {
                await responseStore.EnsureDeleted(record.Id).ConfigureAwait(false);
            }

            var committedResponse = committedSideEffects.Single();
            await requestStore.AssociateResponse(messageId, committedResponse.Id).ConfigureAwait(false);
        }