 
   See `Drab.Core.broadcast_js/2` for broadcasting options.
   """
-  @spec delete!(Drab.Core.subject(), Keyword.t() | String.t()) :: Drab.Core.subject()
+  @spec delete!(Drab.Core.subject(), Keyword.t() | String.t()) :: Drab.Core.subject() | no_return
   def delete!(socket, options) do
     do_delete(socket, @broadcast, options)
     socket

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

  end

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