drain method

Future<void> drain(
  1. QueuedActionExecutor execute
)

Implementation

Future<void> drain(QueuedActionExecutor execute) {
  _serial = _serial.then((_) async {
    final queue = await _read();
    final remaining = <_QueuedAction>[];
    for (final item in queue) {
      try {
        await execute(item.event);
      } on Object {
        final attempts = item.attempts + 1;
        if (attempts < maxRetries) {
          remaining.add(item.copyWith(attempts: attempts));
        }
      }
    }
    await _write(remaining);
  });
  return _serial;
}