I think that semantically 409 Conflict is the best alternative - basically, if you have a dead end, there is competition for some resource, and therefore the operation cannot be completed.
Now, depending on the cause of the deadlock, the request may fail if it is submitted a second time, but this is true for everything.
For 503, as a client, I would perform some kind of retraction / shutdown operation, since the system is limited in speed, while 409 refers to a specific request.
source share