NULL is unexpected, but that doesn’t really matter here: The expected result is org.bluez.Error (read: the error name returned by the service), which doesn’t tell you anything you don’t know already.
TIL that the D-Bus protocol allows passing arbitrary arguments in messages of type ERROR. If bluez uses that, then you can use the lower-level API to examine the arguments:
But that’s a big if, it’s much more likely than not that the generic “Software caused connection abort” is all bluez is giving you. If there was a more detailed error, I’d expect a more specific error name, so callers don’t have to jump through hoops to get to the details.
TIL that the D-Bus protocol allows passing arbitrary arguments in messages of type ERROR. If bluez uses that, then you can use the lower-level API to examine the arguments: