        caller: nil,
        number_of_redirects: 0,
        progress?: true,
-       opts: []
+       get_opts: []
      }}
   end
 

  def handle_call({:get, url, opts}, from, s) do
    progress? = Keyword.get(opts, :progress?, true)

    headers =
      Keyword.get(opts, :headers, [])
      |> Enum.map(fn {k, v} ->
        {to_charlist(k), to_charlist(v)}
      end)

    headers = [
      {'User-Agent', 'Nerves HTTP Client #{Nerves.version()}'},
      {'Content-Type', 'application/octet-stream'} | headers
    ]

    http_opts =

      |> Keyword.merge(Nerves.Utils.Proxy.config(url))
      |> Keyword.merge(Keyword.get(opts, :http_opts, []))

    :httpc.request(
      :get,
      {String.to_charlist(url), headers},
      http_opts,
      [stream: :self, receiver: self(), sync: false],
      :nerves
    )

    {:noreply, %{s | url: url, caller: from, get_opts: opts, progress?: progress?}}
  end

  def handle_info({:http, {_ref, {:error, {:failed_connect, _}} = err}}, s) do
