code: @InterfaceAudience.Private
      public Future runAsync(String databaseName, final AsyncTask function) throws CouchbaseLiteException {
          final Database database = getDatabase(databaseName);
          return runAsync(new Runnable() {
              @Override
              public void run() {
                  function.run(database);
              }
          });
      }
docs: Asynchronously dispatches a callback to run on a background thread. The callback will be passed
  Database instance.  There is not currently a known reason to use it, it may not make
  sense on the Android API, but it was added for the purpose of having a consistent API with iOS.
  
  @exclude