docs: public CompletableFuture<MetadataResponse> metadata(MetadataRequest request) {
      CompletableFuture<MetadataResponse> future = new CompletableFuture<>();
      if (context.isCurrentContext()) {
        sendRequest(request, protocol::metadata, future);
      } else {
        context.execute(() -> sendRequest(request, protocol::metadata, future));
      }
      return future;
    }