def eager_dispatch(action, params = {}, env = {}, blk = nil)
kontroller = if blk.nil?
new(Merb::Request.new(env))
else
result = case blk.arity
when 0 then blk[]
when 1 then blk[params]
else blk[*[params, env]]
end
case result
when NilClass then new(Merb::Request.new(env))
when Hash, Mash then new(Merb::Request.new(result))
when Merb::Request then new(result)
when Merb::Controller then result
else raise ArgumentError, "Block to eager_cache must return nil, the env Hash, a Request object, or a Controller object"
end
end
kontroller.force_cache!
kontroller._dispatch(action)
kontroller
end