Task<Tuple2<Duration, A>> get timed => Task(() { final sw = Stopwatch()..start(); return _run().then((a) => tuple2(sw.elapsed, a)); });