Is there a reason to use a label here? I would propose indexing the reqHeaders before the loop and then call hasOwnProperty. Like such:
```
       for (reqHeaderName in reqHeaders) {
            reqHeadersIndex[lowercase(reqHeaderName)] = true;
        }

        // using for-in instead of forEach to avoid unecessary iteration after header has been found
        for (defHeaderName in defHeaders) {
          if(reqHeadersIndex.hasOwnProperty(lowercase(defHeaderName))){
            continue;
          }

          reqHeaders[defHeaderName] = defHeaders[defHeaderName];
        }
```

This removes use of the label and nested for loop bringing the overall computational complexity of mergeHeaders from O(n<sup>2</sup>) to O(n)