release method

void release()

Release one permit, handing it to the next waiter if any.

Implementation

void release() {
  if (_queue.isNotEmpty) {
    _queue.removeAt(0).complete();
  } else {
    _permits++;
  }
}