https://www.jamescrosswell.dev/posts/async-detecting-blocking-calls/