private function validateAndTrimHeader($header, $values): array
    {
        if (! is_array($values)) {
            $values = [$values];
        } elseif (empty($values)) {
            throw new \InvalidArgumentException('Header values must be strings, empty array given.');
        } else {
            // Non empty array
            $values = array_values($values);
        }

        if (! is_string($header) || empty($header)) {
            throw new \InvalidArgumentException('Header name must be a string');
        }

        foreach ($values as &$v) {
            if (is_numeric($v)) {
                $v = (string) $v;
            } elseif (! is_string($v)) {
                throw new \InvalidArgumentException('Header values must be strings');
            }
        }

        return array_map(function (string $value) {
            return trim($value, " \t");
        }, $values);
    }