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