Tests: added js fetch tests for a response with many headers.
diff --git a/js_fetch.t b/js_fetch.t
index f47ef79..44bdbb3 100644
--- a/js_fetch.t
+++ b/js_fetch.t
@@ -74,6 +74,10 @@
             js_content test.header;
         }
 
+        location /header_iter {
+            js_content test.header_iter;
+        }
+
         location /multi {
             js_content test.multi;
         }
@@ -274,6 +278,22 @@
         .catch(e => r.return(501, e.message))
     }
 
+    async function header_iter(r) {
+        let url = `http://127.0.0.1:$p2/\${r.args.loc}`;
+
+        let response = await ngx.fetch(url);
+
+        let headers = response.headers;
+        let out = [];
+        for (let key in response.headers) {
+            if (key != 'Connection') {
+                out.push(`\${key}:\${headers.get(key)}`);
+            }
+        }
+
+        r.return(200, njs.dump(out));
+    }
+
     function multi(r) {
         var results = [];
         var tests = [
@@ -335,19 +355,16 @@
     }
 
      export default {njs: test_njs, body, broken, broken_response,
-                     chain, chunked, header, multi, loc, property};
+                     chain, chunked, header, header_iter, multi, loc, property};
 EOF
 
-$t->try_run('no njs.fetch')->plan(27);
+$t->try_run('no njs.fetch')->plan(28);
 
 $t->run_daemon(\&http_daemon, port(8082));
 $t->waitforsocket('127.0.0.1:' . port(8082));
 
 ###############################################################################
 
-local $TODO = 'not yet'
-	unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.5.1';
-
 like(http_get('/body?getter=arrayBuffer&loc=loc'), qr/200 OK.*"aaa:GET:::"$/s,
 	'fetch body arrayBuffer');
 like(http_get('/body?getter=text&loc=loc'), qr/200 OK.*"aaa:GET:::"$/s,
@@ -414,6 +431,16 @@
 	'"very large fetch chunked response"]', 'fetch chunked');
 like(http_get('/chain'), qr/200 OK.*SUCCESS$/s, 'fetch chain');
 
+TODO: {
+local $TODO = 'not yet'
+	unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.7.4';
+
+like(http_get('/header_iter?loc=duplicate_header_large'),
+	qr/\['A:a','B:a','C:a','D:a','E:a','F:a','G:a','H:a','Foo:a,b']$/s,
+	'fetch header duplicate large');
+
+}
+
 ###############################################################################
 
 sub recode {
@@ -486,6 +513,22 @@
 				"Connection: close" . CRLF .
 				CRLF;
 
+		} elsif ($uri eq '/duplicate_header_large') {
+			print $client
+				"HTTP/1.1 200 OK" . CRLF .
+				"A: a" . CRLF .
+				"B: a" . CRLF .
+				"C: a" . CRLF .
+				"D: a" . CRLF .
+				"E: a" . CRLF .
+				"F: a" . CRLF .
+				"G: a" . CRLF .
+				"H: a" . CRLF .
+				"Foo: a" . CRLF .
+				"Foo: b" . CRLF .
+				"Connection: close" . CRLF .
+				CRLF;
+
 		} elsif ($uri eq '/headers') {
 			print $client
 				"HTTP/1.1 200 OK" . CRLF .