     headers
     |> Enum.into(%{})
     |> Map.fetch!("Location")
-    |> HTTPoison.get
+    |> http_get
     |> handle_response(elements)
   end
   def handle_response({:ok, %{status_code: 404}}, _elements), do: %{error: "page_not_found"}
   def handle_response({:ok, %{status_code: 451}}, _elements), do: %{error: "dmca_takedown"}
+  def handle_response({:ok, %{status_code: 500}}, _elements), do: %{error: "github_server_error"}
   def handle_response({:ok, %{status_code: code, body: body}}, _elements) do
     # Some unknown failure: elaborate!
     %{error: "Request failed with status_code #{code}:\n#{Floki.text(body)}"}

      _otherwise ->
        Ecto.Changeset.change(changeset, new_data)
    end
  end

  @doc """

    repo_name = Krihelinator.GithubRepo.fetch_name(changeset)
    new_data =
      "https://github.com/#{repo_name}#{suffix}"
      |> http_get
      |> handle_response(elements)
    case new_data do
      %{error: error} ->
