@useResult Future<bool> tryWait(Duration timeout) { if (_isSet) { _isSet = false; return _true; } else { return _queue.enqueue(timeout); } }