One thing I always found more work than I would expect is when you have a graph of operations, think a Makefile, but a bit dynamic. For this model completable futures and executors seem to work well (provided the graphs is smallish), but golang is (or perhaps before generics) just was difficult.
fizlebit · · focus · HN ↗
gandreani · · focus · HN ↗
<a href="https://github.com/goyek/goyek" rel="nofollow">https://github.com/goyek/goyek