import 'dart:async'; extension NamedTimeoutExtension on Future { /// Like [Future.timeout], but the [TimeoutException] includes [operation] /// so crash reports identify which call timed out. Future namedTimeout(Duration timeLimit, {required String operation}) { return timeout( timeLimit, onTimeout: () { throw TimeoutException('$operation timed out', timeLimit); }, ); } }