-
logger() lowercases header name options at construction. (#316)
headerRequestIdName / headerRequestIpName are normalized with .toLowerCase() so
req.headers[...] lookups match Node’s lowercased incoming header keys (RFC 9110 §5.1).
Mixed-case values such as 'X-Request-Id' no longer silently miss the proxy header and
fall through to UUID / missing IP. Non-string values throw TypeError at construction
(logger(): "…" option must be a string), matching the rate-limit / timeout / handler
factory-time value-validation pattern.
-
http/timeout validates option values at construction and names default constants. (#303, #306)
Named defaults DEFAULT_TIMEOUT_MS / DEFAULT_STATUS_CODE (via STATUS_CODE_REQUEST_TIMEOUT /
STATUS_CODE_GATEWAY_TIMEOUT) replace magic-number destructuring. Factory throws TypeError
when ms is not a positive finite number, when ms exceeds MAX_TIMEOUT_MS (Node
setTimeout signed 32-bit max — larger values clamp to 1 ms), or when statusCode is not
408 or 504 (keys-only validateOptions was previously the only check). Matches the
rate-limit factory-time value-validation pattern.
-
handler() throws TypeError at construction when pipeline or onResponse is not a function. (#309)
Factory previously accepted invalid types and deferred failure to the first request
(pipeline → perpetual 500; truthy non-function onResponse → silently swallowed).
Matches the rate-limit / idempotency construction-time value-validation pattern.