# File lib/rubygems/remote_fetcher.rb, line 163
  def fetch_path(uri, mtime = nil, head = false)
    data = open_uri_or_path uri, mtime, head
    data = Gem.gunzip data if data and not head and uri.to_s =~ /gz$/
    data
  rescue FetchError
    raise
  rescue Timeout::Error
    raise FetchError.new('timed out', uri)
  rescue IOError, SocketError, SystemCallError => e
    raise FetchError.new("#{e.class}: #{e}", uri)
  end