class BackgroundRpcListener implements RpcListener {

    @Override
    public void start(InputStream inputStream) {
        Objects.requireNonNull(inputStream, "inputStream may not be null");
        if (listener != null) {
            log.info("Already listening, ignoring");
            return;
        }

        listener = executorService.submit(() -> {
            try {
                log.info("Started listening on stream");
                listenForMessages(inputStream);
            } catch (IOException e) {
                log.error("Listening to messages failed!", e);
                throw new RuntimeException(e);
            }
        });
    }

    public  BackgroundRpcListener(ExecutorService executorService, ObjectMapper responseObjectMapper);

}