In core, just use SingleResultCallback. In driver-async, overload methods, one that takes a SingleResultCallback, the other which does not and returns a regular Future.