Hello, Expiscornovus ...
So, I've done some testing around your solution ... and it kind of almost worked in my environment (though there are a couple of small differences between what you did above and what I did ...) but in the interests of completeness, I'm documenting it here in case someone else runs into the glitch I did.
So I put in a Send HTTP to SharePoint function and set it up (almost) as you suggested:

Then I used the Body output from the Send HTTP function as the source value for my condition ...

Just to clarify, the Body value is:
body('Send_an_HTTP_Request_to_SharePoint_-_Register_Value')
... so we're clear I wasn't using the wrong Body output.
Then, just to check what was going on behind the scenes, I dropped in a Compose function to display the current value of Body.

Then I made a change in the source List in order to trigger the Flow, then took a look at the result ...
The Compose function showed that the value for Body did indeed contain the text "already":

So this should have been a false from the Condition (The Register value does contain "already") and the Flow should have stopped. But not the case. The Condition outcome was true ...

... the Flow changed the Register value and we were in a loop again.

It seemed to me like the Condition didn't much like the Body output from the initial Send HTTP...Register function.
So on a hunch, I wrote the Body value to a variable and used that. And it worked.

With the variable initialised and a default value added, I replaced the Body value in the Condition with the variable.

Then I changed the Compose outcome to show the value of the variable.

... and triggered the Flow again. This time the Condition showed false ...

... and the second Send HTTP to SharePoint function did not update the already updated link ... and no looping.

... even though the Compose output of the variable didn't look any different from the Compose output for the Body value.

So ... not quite sure what is going on here, but writing the Body value to a variable and using the variable in the Condition seemed to work where using the Body value directly in the Condition didn't appear to work.
Maybe I'm missing something obvious, but the result is what counts and at least I no longer have a loop when I update my Register link value from "Book this event" to "This event is already booked".
Thanks for pointing me in the right direction, though.
Alan.