effectAsync method
Create an async effect with an async cleanup. The body receives a compute context; reruns are serialized per effect (a rerun does not start until the previous cleanup future completes), and disposal awaits the current cleanup before removing the node.
The body returns an optional cleanup callback (a sync or async function to run before the next body starts).
Implementation
AsyncEffectHandle effectAsync(
Future<dynamic> Function(AsyncComputeContext ctx) body) {
final handle = _AsyncEffectHandle(this, body);
_effects.add(handle);
handle._scheduleRerun();
return handle;
}