Future<T> add<T>(FutureOr<T> Function() job) { var completer = Completer<T>(); _queue.add(_Item<T>(completer, job)); _check(); return completer.future; }