Initialize the component asynchronously. Should be idempotent - calling multiple times should have no additional effect.
Check if the component has been initialized.
Wait for the component to be ready. If not initialized, will call initialize() automatically.
Interface for components that require asynchronous initialization. Provides a standard way to ensure resources are ready before use.