lib/api/kernel_api.ex

defmodule Rephex.Api.KernelApi do
  @moduledoc false
  @callback send(dest :: Process.dest(), message) :: message when message: any()

  @behaviour Rephex.Api.KernelApi

  def send(dest, message), do: impl().send(dest, message)
  defp impl, do: Application.get_env(:rephex, :kernel_api, Rephex.Api.KernelApi.Impl)
end

defmodule Rephex.Api.KernelApi.Impl do
  @moduledoc false
  @behaviour Rephex.Api.KernelApi

  def send(dest, message) do
    Kernel.send(dest, message)
  end
end