I noticed Spring-Cloud ZUUL forces the execution isolation to SEMAPHORE instead of the THREAD defaults (as recommended by Netflix).
A comment in org.springfram
This pattern is defined in the Hystrix documentation
The façade HystrixCommand can use semaphore-isolation since all of the work it is doing is going through two other HystrixCommands that are already thread-isolated. It is unnecessary to have yet another layer of threading as long as the run() method of the façade is not doing any other network calls, retry logic, or other “error prone” things.
The reason why we only use semaphore is because
Reference: https://github.com/Netflix/Hystrix/wiki/How-To-Use#primary--secondary-with-fallback