 
   This another caller can be even shared between several method callers.
 
-  Example:
+  Method callers are optimized callers, but a single function can be passed and
+  it will be called with an %RPC.Message. If it returns {:ok, res} or
+  {:error, error} its processed, :empty or :nok tries next callers.
+
+  ## Example:
 
   I will create three method callers, so that a calls, and b too. Method can
   be shadowed at parent too.

    iex> MethodCaller.call b, "c", [], context
    :c

  """
  def add_method_caller(pid, pid) do
    raise "Cant add a method caller to itself."
  end
  def add_method_caller(pid, nmc) do
    Agent.update pid, fn st ->
      %{ st | mc: st.mc ++ [nmc] }
    end

  If the method does not exists, returns :nok, if it does, returns :ok.

  Callback is a function that can receive {:ok, value} or {:error, %Exception{...}}

  Alternatively mc can be a function that receies a %RPC.Message and returns any of:

  * {:ok, ret}
  * {:error, error}
  * :nok
  * :empty

  Possible errors:
   * :unknown_method
