diff --git a/recaptcha.module b/recaptcha.module
index 1e65aab..2d28cbc 100644
--- a/recaptcha.module
+++ b/recaptcha.module
@@ -116,18 +116,27 @@ function recaptcha_captcha($op, $captcha_type = '') {
             '#suffix' => $noscript,
           );
 
-          // @todo: #1664602: D7 does not yet support "async" in drupal_add_js().
-          // drupal_add_js(url('https://www.google.com/recaptcha/api.js', array('query' => array('hl' => $language->language), 'absolute' => TRUE)), array('defer' => TRUE, 'async' => TRUE, 'type' => 'external'));
-          $data = array(
-            '#tag' => 'script',
-            '#value' => '',
-            '#attributes' => array(
-              'src' => url('https://www.google.com/recaptcha/api.js', array('query' => array('hl' => $language->language), 'absolute' => TRUE)),
-              'async' => 'async',
-              'defer' => 'defer',
+          if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])
+            && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
+            drupal_add_js(url(
+              'https://www.google.com/recaptcha/api.js',
+              array('query' => array('hl' => $language->language), 'absolute' => TRUE)
             ),
-          );
-          drupal_add_html_head($data, 'recaptcha_api');
+              array('defer' => TRUE, 'async' => TRUE, 'type' => 'external')
+            );
+          }
+          else {
+            $data = array(
+              '#tag' => 'script',
+              '#value' => '',
+              '#attributes' => array(
+                'src' => url('https://www.google.com/recaptcha/api.js', array('query' => array('hl' => $language->language), 'absolute' => TRUE)),
+                'async' => 'async',
+                'defer' => 'defer',
+              ),
+            );
+            drupal_add_html_head($data, 'recaptcha_api');
+          }
         }
         else {
           // Fallback to Math captcha as reCAPTCHA is not configured.
