def METHOD_NAME(self, download_id: str, reason: str = "") -> None:
    download = self.repository.get(download_id)
    if not download:
        raise FileDownloadNotFound()
    download.failed = True
    download.error_message = reason
    self.repository.save(download)
    self.event_bus.push(
        Event(
            type=EventType.DOWNLOAD_FAILED,
            payload=download.to_dto(),
            permissions=PermissionInfo(owner=download.owner)
            if download.owner
            else PermissionInfo(public_mode=PublicMode.READ),
        )
    )