Throwing an error like this requires synchronous control flow to work correctly, but this is an asynchronous method. The way I see it there are two options. Update the callbacks to take two arguments of the form `(error, result)` (not backwards compatible and thus requiring a lot of refactorring on the consumer side) on emitting the `error` event from the `session` (will probably need to find some way to correlate this with the actual operation causing the error).