debugging concurrent code with microsecond intervals between events makes debuggers worthless. printing logs is the only way to get something to post mortem this kind of code.
when i write code it's either too short if it's linear and too parallel, concurrent and time-dependent if it's not linear.
concurrent solutions can do a lot of things that you can't do with long winded single threads. number one thing is extremely low latency responses. parallel throughput tends to just be simple single threads and usually barely needs debugging.