Не опрашивать.Используйте встроенные средства синхронизации.
RestResponse<T> response = null;
var executedCallBack = new AutoResetEvent(false);
client.ExecuteAsync(request, (RestResponse<T> aSyncResponse)=>{
response = aSyncResponse;
executedCallBack.Set();
});
executedCallBack.WaitOne();
//continue execution synchronously
В качестве примечания мне пришлось изменить порядок операций внутри обратного вызова.В вашем примере было условие состязания, поскольку флаг мог позволить основному потоку продолжить и попытаться прочитать ответ до того, как поток обратного вызова его написал.