protected void getVertxBufferOutputStream(String fileName, Handler<AsyncResult<InputStream>> doneHandler) {
		vertx.fileSystem().open(fileName, null, false, false, false, result -> {
			if (result.failed()) {
				doneHandler.handle(new SimpleAsyncResult<>(result.cause()));
				return;
			}

			PipedOutputStream os = new PipedOutputStream();
			try {
				InputStream is = new PipedInputStream(os);
				doneHandler.handle(new SimpleAsyncResult<>(is));
			} catch (Exception e) {
				doneHandler.handle(new SimpleAsyncResult<>(e));
				return;
			}
			result.result().dataHandler(data -> {
				try {
					os.write(data.getBytes());
				} catch (Exception e) {
					container.logger().warn("Failed to read " + fileName, e);
					try {
						//os.close();
						result.result().close();
					} catch (Exception ex) {
						container.logger().debug("Failed to close stream after reading " + fileName, e);
					}
				}
			});
			result.result().endHandler(v -> {
				try {
					os.close();
				} catch (Exception e) {
					container.logger().debug("Failed to close stream after reading " + fileName, e);
				}
			});
		});
	}