if (args[4]->IsFunction()) {
Local<Object> obj = Object::New();
obj->Set(FIXED_ONE_BYTE_STRING(node_isolate, "ondone"), args[4]);
+ obj->Set(FIXED_ONE_BYTE_STRING(node_isolate, "domain"), GetDomain());
req->obj.Reset(node_isolate, obj);
uv_queue_work(uv_default_loop(),
&req->work_req,
if (args[1]->IsFunction()) {
Local<Object> obj = Object::New();
obj->Set(FIXED_ONE_BYTE_STRING(node_isolate, "ondone"), args[1]);
+ obj->Set(FIXED_ONE_BYTE_STRING(node_isolate, "domain"), GetDomain());
req->obj_.Reset(node_isolate, obj);
uv_queue_work(uv_default_loop(),
--- /dev/null
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var common = require('../common');
+var assert = require('assert');
+var domain = require('domain');
+
+try {
+ var crypto = require('crypto');
+} catch (e) {
+ console.log('Skipping test, compiled without crypto support.');
+ return;
+}
+
+function test(fn) {
+ var ex = new Error('BAM');
+ var d = domain.create();
+ d.on('error', common.mustCall(function(err) {
+ assert.equal(err, ex);
+ }));
+ var cb = common.mustCall(function() {
+ throw ex;
+ });
+ d.run(cb);
+}
+
+test(function(cb) {
+ crypto.pbkdf2('password', 'salt', 1, 8, cb);
+});
+
+test(function(cb) {
+ crypto.randomBytes(32, cb);
+});