   """
   @spec poke(Phoenix.Socket.t(), atom | nil, String.t() | nil, Keyword.t()) :: result
   def poke(socket, view, partial, assigns) do
-    Deppie.once """
+    Deppie.once("""
     `poke` return value will be changed to `{:ok, :ok}`, `{:error, reason}` in v0.9.0.
-    """
+    """)
+
     do_poke(socket, view, partial, assigns, &Drab.Core.exec_js/2)
   end
-
-
-
-
 
   @doc """
   Exception raising version of `poke/2`.

    peek(socket, view, partial, String.to_existing_atom(assign))
  end



  @doc """
  Updates the current page in the browser with the new assign value.


        assign @conn is read only.
        """
    end
    assigns_to_update = Enum.into(assigns, %{})

    view = view || Drab.get_view(socket)
    partial =
      if partial_name, do: Partial.hash_for_view_and_name(view, partial_name), else: index(socket)

    current_assigns = assign_data_for_partial(socket, partial, partial_name, :assigns)
    nodrab_assigns = assign_data_for_partial(socket, partial, partial_name, :nodrab)
    all_assigns = all_assigns(assigns_to_update, current_assigns, nodrab_assigns)

    html = rerender_template(socket, view, partial, all_assigns)

    update_javascripts =
      update_javascripts(socket, html, partial, assigns_to_update, current_assigns)
    assign_updates = assign_updates_js(assigns_to_update, partial, drab_commander_id(socket))
    all_javascripts = (assign_updates ++ update_javascripts) |> Enum.uniq() |> Enum.join(";")

    # IO.inspect update_javascripts
    # IO.inspect(all_javascripts)

    case function.(socket, all_javascripts) do
      {:ok, _} ->
        update_assigns_cache(socket, assigns_to_update, partial, drab_commander_id(socket))
        socket

      {:error, _} = other ->
        other

      {:timeout, _} = other ->
        other

      # poke! with exec_js!
      _ ->
        :ok
    end
  end

  defp all_assigns(assigns, current_assigns, nodrab_assigns) do
    updated_assigns = Map.merge(current_assigns, assigns)
    all_assigns = Map.merge(nodrab_assigns, updated_assigns)
    Enum.into(all_assigns, [])
  end

  defp rerender_template(socket, view, partial, all_assigns) do
    template = Partial.template_filename(view, partial)
    html = Phoenix.View.render_to_string(view, template, all_assigns)
    update_csrf_token(html, csrf_token(socket))
  end

  defp assigns_to_update_keys(assigns_to_update, current_assigns_keys) do
    assigns_to_update_keys = Map.keys(assigns_to_update)

    for as <- assigns_to_update_keys do
