public function requestTarget()
    {
        if ($this->method() === 'CONNECT' ||  $this->mode() === 'authority') {
            $credential = $this->credential();
            return ($credential ? $credential. '@' : '') . $this->host();
        }
        if ($this->mode() === 'absolute') {
            return $this->url();
        }
        if ($this->mode() === 'asterisk') {
            return '*';
        }
        $query = $this->query() ? '?' . http_build_query($this->query()) : '';
        $fragment = $this->fragment();
        return $this->path() . $query . ($fragment ? '#' . $fragment : '');
    }