I do both when I'm scaling to millions of requests per day. I also do some cpu bound preprocessing after the io bound async functions end.
It was pretty remarkable to go from 32 cores being maxed for 100 concurrent workers to... A 10-15% usage spike on a 4 core XPS :)