Haskell definitely makes it easier.
You can use preemptive green threads with almost all the ease of cooperatively multitasked code because of the prevalence of immutability.
You get the performance benefits of non-blocking code.
The simplicity benefits of blocking code.
And (almost) none of the threading hell you get in imperative languages.