@Vaibhav, thanks for the patch and following up on the overall async execution line items!
The patch itself looks fine on the first pass. I do have a high level question on the approach. The patch enables async execution by defaults on client side and adds synchronous wait top of that. This IHMO defeats the purpose of the aysnc execution. From the application point of view, there's no difference in the behavior with or without this patch. The execution will block till the query execution is complete.
The rationale of async execution is to return control back to client immediately so that the client has an option to perform alternate foreground work while the query is being processed. Have you considered blocking in fetch for queries with resultset ? That in would give more time for server to process the query in parallel while client examines the resultset description and possible interact with end user etc.