diff --git a/fetch.js b/fetch.js
index <HASH>..<HASH> 100644
--- a/fetch.js
+++ b/fetch.js
@@ -547,9 +547,15 @@ export function fetch(input, init) {
       }
     }
 
-    request.headers.forEach(function(value, name) {
-      xhr.setRequestHeader(name, value)
-    })
+    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
+      Object.getOwnPropertyNames(init.headers).forEach(function(name) {
+        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))
+      })
+    } else {
+      request.headers.forEach(function(value, name) {
+        xhr.setRequestHeader(name, value)
+      })
+    }
 
     if (request.signal) {
       request.signal.addEventListener('abort', abortXhr)
If headers are passed in via a Record then do not normalise the header names as part of the request