release method

  1. @override
Future<void> release()
override

Implementation

@override
Future<void> release() {
  if (_owner == null) {
    throw StateError('Attempting to release a lock that is unowned');
  }

  if (_owner != Zone.current) {
    throw StateError(
        'Attempting to release a lock that is owned by a different zone');
  }

  if (--_count > 0) {
    return _void;
  }

  _owner = null;
  if (_queue.isNotEmpty) {
    _queue.dequeue();
  }

  return _void;
}