       socket |> insert(class: "btn-success", into: "#button")
       socket |> insert("<b>warning</b>", before: "#pane")
   """
-  @spec insert(Phoenix.Socket.t(), Keyword.t()) :: Phoenix.Socket.t()
+  @spec insert(Phoenix.Socket.t(), Keyword.t()) :: Phoenix.Socket.t() | no_return
   def insert(socket, options) do
     do_insert(socket, @no_broadcast, options)
     socket
   end
 
   @doc "See `Drab.Query.insert/2`"
-  @spec insert(Phoenix.Socket.t(), String.t(), Keyword.t()) :: Phoenix.Socket.t()
+  @spec insert(Phoenix.Socket.t(), String.t(), Keyword.t()) :: Phoenix.Socket.t() | no_return
   def insert(socket, html, options) do
     do_insert(socket, @no_broadcast, html, options)
     socket


  See `Drab.Core.broadcast_js/2` for broadcasting options.
  """
  @spec insert!(Drab.Core.subject(), Keyword.t()) :: Drab.Core.subject()
  def insert!(socket, options) do
    do_insert(socket, @broadcast, options)
    socket
  end

  @doc "See `Drab.Query.insert/2`"
  @spec insert!(Drab.Core.subject(), String.t(), Keyword.t()) :: Drab.Core.subject()
  def insert!(socket, html, options) do
    do_insert(socket, @broadcast, html, options)
    socket

      socket |> execute(trigger: "click", on: "#mybutton")
      socket |> execute("trigger(\"click\")", on: "#mybutton")
  """
  @spec execute(Phoenix.Socket.t(), Keyword.t()) :: Phoenix.Socket.t() | no_return
  def execute(socket, options) do
    do_execute(socket, @no_broadcast, options)
    socket
