Add async dispatch to WebClient request

The OpenAsyncRead blocks the thread for around 12s if there is no network connection. Consequently it needs wrapping in another thread dispatch