Hystrix should only be used with semaphores for HystrixObservableCommands. I agree that non-blocking code makes Hystrix less necessary. We're in the middle of apply Hystrix to some non-blocking systems internally at the moment. We still find that a consistent place to put fallback behavior, have timeouts, and bound concurrency is useful. Generally, we feel that building a resilient nonblocking system without Hystrix will be easier than a resilient blocking system without Hystrix, so its benefit is somewhat muted. We'd love to hear about your experiences, if you can share as you get further.