import 'package:cherrypick/cherrypick.dart'; class AsyncA {} class AsyncB { final AsyncA a; AsyncB(this.a); } class AsyncC { final AsyncB b; AsyncC(this.b); } class AsyncChainModule extends Module { @override void builder(Scope currentScope) { bind().toProvideAsync(() async => AsyncA()).singleton(); bind().toProvideAsync(() async => AsyncB(await currentScope.resolveAsync())).singleton(); bind().toProvideAsync(() async => AsyncC(await currentScope.resolveAsync())).singleton(); } }