public function id(): string
    {
        if (null !== $this->id) {
            return $this->id;
        }

        if ($this->headers->contain('HTTP_X_REQUEST_ID')) {
            $this->id = $this->readHeader('HTTP_X_REQUEST_ID')
                    ->ifMatches('~^([a-zA-Z0-9+/=-]{20,200})$~');
        }

        if (null === $this->id) {
            $this->id = substr(str_shuffle(md5(microtime())), 0, 25);
        }

        return $this->id;
    }