Yes. The transform() method can return a Promise and NestJS automatically awaits it before injecting the value into the handler. Async pipes are used for database-backed validation — for example, checking that an entity exists and returning it directly so the handler receives the full object instead of a raw ID string.
Return Promise<T> from transform() — NestJS awaits it before calling the handler.
Async pipes that inject services must use the DI container — register as @Injectable() provider.
Pass the pipe as a class reference so NestJS resolves its dependencies: @Param('id', UserExistsPipe).
Using new UserExistsPipe() bypasses DI — the injected service will be undefined.
Async pipes increase request latency by the time of the awaited operation — use wisely.