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

      socket |> delete(from: "code") # empty all `<code>`, but node remains
      socket |> delete(class: "btn-success", from: "#button")
  """
  @spec delete(Phoenix.Socket.t(), Keyword.t() | String.t()) :: Phoenix.Socket.t()
  def delete(socket, options) do
    do_delete(socket, @no_broadcast, options)
    socket

  @doc """
  See `Drab.Query.execute/2`
  """
  @spec execute(Phoenix.Socket.t(), String.t(), Keyword.t()) :: Phoenix.Socket.t() | no_return
  def execute(socket, method, options) do
    do_execute(socket, @no_broadcast, method, options)
    socket
