Currently with a SessionedClient there is no way to cancel a long running script and the client has to depend on Gremlin Server side configured timeouts before they can execute another script associated with the same session id.
There is a way we can forcefully close a session from the client side, or just close the entire Gremlin client. But it would be useful for client side applications to be able to cancel script execution, have its intermediate effects rolled back, and be able to continue interacting with the session without losing session variable state maintained on the Gremlin server side.
Unsure where this should live at an API level, since canceling by session id isn't relevant for all Client implementations. If somehow when the CompletableFuture<ResultSet> returned by Client.submitAsync could do this when the Future is canceled, that would be a nice way to bridge implementations.