@@ -37,10 +37,38 @@ namespace NodeDBus {
37
37
38
38
Local<Value> err = Nan::Null ();
39
39
if (dbus_error_is_set (&error)) {
40
- err = Nan::Error (error.message );
40
+ if (error.message != NULL ) {
41
+ Local<Value> createErrorParameters[] = {
42
+ Nan::New (error.name ).ToLocalChecked (),
43
+ Nan::New (error.message ).ToLocalChecked ()
44
+ };
45
+ err = data->createError ->Call (2 , createErrorParameters);
46
+ }
47
+ else {
48
+ Local<Value> createErrorParameters[] = {
49
+ Nan::New (error.name ).ToLocalChecked (),
50
+ Nan::Undefined ()
51
+ };
52
+ err = data->createError ->Call (2 , createErrorParameters);
53
+ }
41
54
dbus_error_free (&error);
42
55
} else if (dbus_message_get_type (reply_message) == DBUS_MESSAGE_TYPE_ERROR) {
43
- err = Nan::Error (dbus_message_get_error_name (reply_message));
56
+ dbus_set_error_from_message (&error, reply_message);
57
+ if (error.message != NULL ) {
58
+ Local<Value> createErrorParameters[] = {
59
+ Nan::New (error.name ).ToLocalChecked (),
60
+ Nan::New (error.message ).ToLocalChecked ()
61
+ };
62
+ err = data->createError ->Call (2 , createErrorParameters);
63
+ }
64
+ else {
65
+ Local<Value> createErrorParameters[] = {
66
+ Nan::New (error.name ).ToLocalChecked (),
67
+ Nan::Undefined ()
68
+ };
69
+ err = data->createError ->Call (2 , createErrorParameters);
70
+ }
71
+ dbus_error_free (&error);
44
72
}
45
73
46
74
// Decode message for arguments
@@ -129,6 +157,9 @@ namespace NodeDBus {
129
157
if (!info[8 ]->IsFunction ())
130
158
return Nan::ThrowError (" Require callback function" );
131
159
160
+ if (!info[9 ]->IsFunction ())
161
+ return Nan::ThrowError (" Require createError function" );
162
+
132
163
int timeout = -1 ;
133
164
if (info[6 ]->IsInt32 ())
134
165
timeout = info[6 ]->Int32Value ();
@@ -219,6 +250,7 @@ namespace NodeDBus {
219
250
DBusAsyncData *data = new DBusAsyncData;
220
251
data->pending = pending;
221
252
data->callback = new Nan::Callback (info[8 ].As <Function>());
253
+ data->createError = new Nan::Callback (info[9 ].As <Function>());
222
254
if (!dbus_pending_call_set_notify (pending, method_callback, data, method_free)) {
223
255
if (message != NULL )
224
256
dbus_message_unref (message);
0 commit comments