diff --git a/src/wp-includes/Requests/src/Transport/Curl.php b/src/wp-includes/Requests/src/Transport/Curl.php
index 7316987b5f..da8f53e0e2 100644
--- a/src/wp-includes/Requests/src/Transport/Curl.php
+++ b/src/wp-includes/Requests/src/Transport/Curl.php
@@ -418,13 +418,27 @@ final class Curl implements Transport {
 				}
 		}
 
-		// cURL requires a minimum timeout of 1 second when using the system
-		// DNS resolver, as it uses `alarm()`, which is second resolution only.
-		// There's no way to detect which DNS resolver is being used from our
-		// end, so we need to round up regardless of the supplied timeout.
-		//
-		// https://github.com/curl/curl/blob/4f45240bc84a9aa648c8f7243be7b79e9f9323a5/lib/hostip.c#L606-L609
-		$timeout = max($options['timeout'], 1);
+		$using_asynch_dns = false;
+		if (defined('CURL_VERSION_ASYNCHDNS')) {
+			$curl_version = curl_version();
+			// phpcs:ignore PHPCompatibility.Constants.NewConstants.curl_version_asynchdnsFound
+			if (CURL_VERSION_ASYNCHDNS & $curl_version['features']) {
+				$using_asynch_dns = true;
+			}
+		}
+
+		if ($using_asynch_dns) {
+			// It should be safe to use any timeout, even if less than 1 second.
+			$timeout = $options['timeout'];
+		} else {
+			// cURL requires a minimum timeout of 1 second when using the system
+			// DNS resolver, as it uses `alarm()`, which is second resolution only.
+			// There's no way to detect which DNS resolver is being used from our
+			// end, so we need to round up regardless of the supplied timeout.
+			//
+			// https://github.com/curl/curl/blob/4f45240bc84a9aa648c8f7243be7b79e9f9323a5/lib/hostip.c#L606-L609
+			$timeout = max($options['timeout'], 1);
+		}
 
 		if (is_int($timeout) || $this->version < self::CURL_7_16_2) {
 			curl_setopt($this->handle, CURLOPT_TIMEOUT, ceil($timeout));
