A general comment to all Callback variants: you should not mix callback-style error handling and exceptions. When a callback throws an exception, there is nobody to handle it. (At least in Node.js world, correct me if Java works differently.)

Thus all onSuccess callbacks must have empty `throws` clause.