action :: :ack | :nack | :reject
opts :: Keyword.t
reason :: term
return_values :: {:reply, action, state} | {:reply, action, state, timeout | :hibernate} | {:noreply, state} | {:noreply, state, timeout | :hibernate} | {:stop, reason, state}
state :: term