docs: def fetch_from_url(
              self, remotefile, localfile=None, is_dl_forced=False, headers=None):
          """
          Given a remote url and a local filename, attempt to determine
          if the remote file is newer; if it is,
          fetch the remote file and save it to the specified localfile,
          reporting the basic file information once it is downloaded
          :param remotefile: URL of remote file to fetch
          :param localfile: pathname of file to save locally
          :return: None
  
          """
          # The 'file' dict in the ingest script is where 'headers' may be found
          # e.g.  OMIM.py has:  'headers': {'User-Agent': 'Mozilla/5.0'}
  
          response = None
          if ((is_dl_forced is True) or localfile is None or
                  (self.checkIfRemoteIsNewer(remotefile, localfile, headers))):
              LOG.info("Fetching from %s", remotefile)
              # TODO url verification, etc
              if headers is None:
                  headers = self._get_default_request_headers()
  
              request = urllib.request.Request(remotefile, headers=headers)
              response = urllib.request.urlopen(request)
  
              if localfile is not None:
                  with open(localfile, 'wb') as binwrite:
                      while True:
                          chunk = response.read(CHUNK)
                          if not chunk:
                              break
                          binwrite.write(chunk)
  
                  LOG.info("Finished.  Wrote file to %s", localfile)
                  if self.compare_local_remote_bytes(remotefile, localfile, headers):
                      LOG.debug("local file is same size as remote after download")
                  else:
                      raise Exception(
                          "Error downloading file: local file size  != remote file size")
  
                  fstat = os.stat(localfile)
                  LOG.info("file size: %s", fstat[ST_SIZE])
                  LOG.info(
                      "file created: %s", time.asctime(time.localtime(fstat[ST_CTIME])))
              else:
                  LOG.error('Local filename is required')
                  exit(-1)
          else:
              LOG.info("Using existing file %s", localfile)
  
          return response