header(name, value, overwrite) {
        // Enforce lowercase for header name
        name = name.toLowerCase();

        // Determine if this operation is an overwrite onto any existing header values
        if (overwrite) {
            // Overwrite the header value
            this._headers[name] = value;

            // Check if some value(s) already exist for this header name
        } else if (this._headers[name]) {
            // Check if there are multiple current values for this header name
            if (Array.isArray(this._headers[name])) {
                // Check if the provided value is an array
                if (Array.isArray(value)) {
                    // Concatenate the current and provided header values
                    this._headers[name] = this._headers[name].concat(value);
                } else {
                    // Push the provided header value to the current header values array
                    this._headers[name].push(value);
                }
            } else {
                // Convert the current header value to an array
                this._headers[name] = [this._headers[name], value];
            }
        } else {
            // Write the header value
            this._headers[name] = value;
        }

        // Make chainable
        return this;
    }
This method can be used to write a response header and supports chaining.

@param {String} name Header Name
@param {String|String[]} value Header Value
@param {Boolean=} overwrite If true, overwrites existing header value with same name
@returns {Response} Response (Chainable)