| 57 | } |
| 58 | |
| 59 | async function asyncProgressWorkerRecvOverloads (bindingFunction) { |
| 60 | const recvObject = { |
| 61 | a: 4 |
| 62 | }; |
| 63 | |
| 64 | function cb () { |
| 65 | assert.strictEqual(this.a, recvObject.a); |
| 66 | } |
| 67 | |
| 68 | bindingFunction(recvObject, common.mustCall(cb)); |
| 69 | if (!checkAsyncHooks()) { |
| 70 | return; |
| 71 | } |
| 72 | const asyncResources = [ |
| 73 | { resName: 'cbRecvResources', resObject: {} }, |
| 74 | { resName: 'cbRecvResourcesObject', resObject: { foo: 'bar' } } |
| 75 | ]; |
| 76 | |
| 77 | for (const asyncResource of asyncResources) { |
| 78 | const asyncResName = asyncResource.resName; |
| 79 | const asyncResObject = asyncResource.resObject; |
| 80 | |
| 81 | const hooks = common.installAysncHooks(asyncResource.resName); |
| 82 | const triggerAsyncId = asyncHooks.executionAsyncId(); |
| 83 | await new Promise((resolve, reject) => { |
| 84 | if (Object.keys(asyncResObject).length === 0) { |
| 85 | bindingFunction(recvObject, common.mustCall(cb), asyncResName); |
| 86 | } else { |
| 87 | bindingFunction(recvObject, common.mustCall(cb), asyncResName, asyncResObject); |
| 88 | } |
| 89 | |
| 90 | hooks.then(actual => { |
| 91 | assert.deepStrictEqual(actual, [ |
| 92 | { |
| 93 | eventName: 'init', |
| 94 | type: asyncResName, |
| 95 | triggerAsyncId, |
| 96 | resource: asyncResObject |
| 97 | }, |
| 98 | { eventName: 'before' }, |
| 99 | { eventName: 'after' }, |
| 100 | { eventName: 'destroy' } |
| 101 | ]); |
| 102 | }).catch(common.mustNotCall()); |
| 103 | resolve(); |
| 104 | }); |
| 105 | } |
| 106 | } |
| 107 | |
| 108 | async function asyncProgressWorkerNoCbOverloads (bindingFunction) { |
| 109 | bindingFunction(common.mustCall(() => {})); |