I think we can fix this in 2.4 branch. We'll have to add a special CDIProvider, e.g. WeldPriorityAwareCDIProvider which will sort the discovered Weld providers (higher priority wins) and return the first one which does return a non-null value.