openDatabase method 
    
    
    
  Implementation
  Future<IDBDatabase?> openDatabase(
  String name, {
  int? version,
  void Function(Event event)? onUpgradeNeeded,
  void Function(Event event)? onBlocked,
}) async {
  if ((version == null) != (onUpgradeNeeded == null)) {
    return Future.error(ArgumentError(
        'version and onUpgradeNeeded must be specified together'));
  }
  try {
    IDBOpenDBRequest? request;
    if (version != null) {
      request = open(name, version);
    } else {
      request = open(name);
    }
    if (onUpgradeNeeded != null) {
      request.onupgradeneeded = onUpgradeNeeded.toJS;
    }
    if (onBlocked != null) {
      request.onblocked = onBlocked.toJS;
    }
    final completer = Completer<void>();
    request.onerror = ((Event _) => completer
        .completeError(request?.error?.message ?? 'Unknown Error!')).toJS;
    request.onsuccess = ((Event _) => completer.complete()).toJS;
    await completer.future;
    return request.result as IDBDatabase?;
  } catch (e, stacktrace) {
    return Future.error(e, stacktrace);
  }
}