Custom providersAsynchronous providersDynamic modulesInjection scopesCircular dependencyModule referenceExecution contextLifecycle eventsPlatform agnosticismTesting