If the output is a Message we grab the headers from the first one and send those as response headers. A function can add headers to messages. The HTTP response will contain only headers that are in x-* _or_ were added to the message by user (i.e. they weren't in the request). We certainly do not want to pass through all HTTP headers (request headers can conflict with or invalidate response headers).