process<T extends JSAny, R> method 
    
      
Future<R?>
process<
T extends JSAny, R>( - ({bool next, R? result}) processor( - T? result
 )
) 
    
    
  Implementation
  Future<R?> process<T extends JSAny, R>(
    ({bool next, R? result}) Function(T? result) processor) {
  final completer = Completer<R?>();
  onsuccess = (Event event) {
    var request = event.target as IDBRequest;
    var cursor = request.result as T?;
    var (next: next, result: r) = processor(cursor);
    if (!next) {
      completer.completeSafe(r);
    } else {
      if (cursor.isA<IDBCursor>()) {
        // ignore: invalid_runtime_check_with_js_interop_types
        var iDBCursor = cursor as IDBCursor;
        iDBCursor.continue_();
      }
    }
  }.toJS;
  onerror = (Event event) {
    var request = event.target as IDBRequest;
    var error = request.error;
    if (error != null) {
      completer.completeErrorSafe(error);
    } else {
      completer.completeErrorSafe("`IDBRequest` error!");
    }
  }.toJS;
  return completer.future;
}