I'm really confused now. I don't yet know shape of the `cache` but it's kind of awkward. I'll get back to this part later once I'll get to understand `cache`. Also I think I'd rather see `deferred.resolve(thingy)` in all conditions rather than early return or deferred overrides, makes logic more linear.