public function handleAsset($params) {
        $response = $this->getResponse();
        $path = null;

        try {
            $module = $this->getModule($params['module']);
            $path = implode('/', [$module->getPath(), 'web', $params['asset'], $params['path']]);

            $this->emit('mvc.preAsset', [$this, &$path, $response]);

            if (file_exists($path)) {
                $response
                    ->body(file_get_contents($path))
                    ->cache()
                    ->contentType(pathinfo($path, PATHINFO_EXTENSION))
                    ->contentLength(filesize($path))
                    ->lastModified(filemtime($path));
            } else {
                $response->statusCode(404);
            }
        } catch (Exception $e) {
            $response->statusCode(404);
        }

        $this->emit('mvc.postAsset', [$this, $path, $response]);

        $response->respond();
        exit();
    }