Doesn't `_resolveFirstLevel` do similar checks? Perhaps it could set a flag in $options['associations'] to indicate whether or not the relation should be eagerly loaded. That would save having to call canBeJoined twice.