drain method
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;
}