I would put the promise services in a protected property like `_services` so that this property can be documented and explains a bit the magic, something like:
```js
this._services[singletonId] = new PromiseService(CAPI[serviceFactoryName].call(CAPI));
```