Runs body within this session, ensuring cleanup after awaited work.
body
Future<T> runAsync<T>(FutureOr<T> Function() body) { start(); return Future.sync(body).whenComplete(end); }