@callback handle_call(msg :: any(), from :: pid(), state :: any()) :: {:reply, response :: any(), state :: any()} | any()
@callback handle_error( data :: any(), attempt :: integer(), error :: any(), state :: any() ) :: {:retry, state :: any()} | {:delay, integer()} | :halt | any()
@callback handle_hibernate(state :: any()) :: any()
@callback handle_init(args :: any()) :: {:ok, state :: any()}
@callback handle_job(data :: any(), state :: any()) :: {:ok, state :: any()} | {fun_callback :: atom(), args :: any(), any(), state :: any()} | {:stop, reply :: any(), state :: any()} | {:stop, state :: any()} | any()
@callback terminate(reason :: any(), state :: any()) :: any()