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