Move default executor to a constant (allows easily replacing it later), change resolved/rejected to return the actual DeferredPromise instance (saves the no-op method call)