public function revive()
    {
        if ($this->isStale !== true) {
            return $this;
        }
        
        $response = clone $this;
        
        $response->status = $this->createGlobalResponseStatus($this->status)
            ->withProtocolVersion($this->getProtocolVersion());
        $response->headers = $this->createGlobalResponseHeaders($this->getHeaders());
        
        if ($response->body instanceof OutputBufferStream) {
            $response->body->useGlobally();
        }
        
        $response->isStale = false;
        
        return $response;
    }