Bug 329282 - [DI] The current 'uninject' scenarios break the API contract
diff --git a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
index 624bf6a..b036360 100644
--- a/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
+++ b/bundles/org.eclipse.e4.core.di/src/org/eclipse/e4/core/internal/di/InjectorImpl.java
@@ -175,23 +175,20 @@
 			int unresolved = unresolved(actualArgs);
 			if (unresolved == -1) {
 				requestor.setResolvedArgs(actualArgs);
+				requestor.execute();
 			} else {
 				if (requestor.isOptional())
 					requestor.setResolvedArgs(null);
-				else {
-					if (shouldDebug) {
-						StringBuffer tmp = new StringBuffer();
-						tmp.append("Uninjecting object \""); //$NON-NLS-1$
-						tmp.append(object.toString());
-						tmp.append("\": dependency on \""); //$NON-NLS-1$
-						tmp.append(requestor.getDependentObjects()[unresolved].toString());
-						tmp.append("\" is not optional."); //$NON-NLS-1$
-						LogHelper.logError(tmp.toString(), null);
-					}
-					continue; // do not execute requestors with unresolved arguments
+				else if (shouldDebug) {
+					StringBuffer tmp = new StringBuffer();
+					tmp.append("Uninjecting object \""); //$NON-NLS-1$
+					tmp.append(object.toString());
+					tmp.append("\": dependency on \""); //$NON-NLS-1$
+					tmp.append(requestor.getDependentObjects()[unresolved].toString());
+					tmp.append("\" is not optional."); //$NON-NLS-1$
+					LogHelper.logError(tmp.toString(), null);
 				}
 			}
-			requestor.execute();
 		}
 	}