I noticed that SearchAsync is making synchronous calls in reality.
I think the fault might be with this code (DoAsyncRequest):
if (tcs.Task != null && tcs.Task.Result != null)
As it accesses the Task's Result, we wait for the task to complete...
horrible connection regression #189
Thanks this is now fixed in 0.9.20.0!
I also wrote a lengthy blog post what went wrong, and the new fixes:
Thanks a ton for pointing it out @dorony