Allow creating middlewares
opts() :: binary() | tuple() | atom() | integer() | float() | [opts()] | %{optional(opts()) => opts()}
call(ExGram.Cnt.t(), opts()) :: ExGram.Cnt.t()
init(opts()) :: opts()