code: def test_ftp_error(self):
      error = downloader.urllib.error.URLError("Problem serving file.")
      mock.patch.object(
          downloader.urllib.request,
          "urlopen",
          side_effect=error,
      ).start()
      url = "ftp://example.com/foo.tar.gz"
      promise = self.downloader.download(url, self.tmp_dir)
      with self.assertRaises(downloader.urllib.error.URLError):
          promise.get()
  
imports: import hashlib
  import io
  import os
  import tempfile
  from typing import Optional
  from unittest import mock
  import pytest
  import tensorflow
  from tensorflow_datasets import testing
  from tensorflow_datasets.core.download import downloader
  from tensorflow_datasets.core.download import resource
  from tensorflow_datasets.core.download import util
label_desc: Use image node_id 8 for calling the DownloaderTest obj's underlying member method code with example usage: obj.test_ftp_error() without return types