| 428 | // temporary hotfix |
| 429 | |
| 430 | const wrapAsync = (asyncExecutor) => { |
| 431 | return new Promise((resolve, reject) => { |
| 432 | let onDone; |
| 433 | let isDone; |
| 434 | |
| 435 | const done = (value, isRejected) => { |
| 436 | if (isDone) return; |
| 437 | isDone = true; |
| 438 | onDone && onDone(value, isRejected); |
| 439 | }; |
| 440 | |
| 441 | const _resolve = (value) => { |
| 442 | done(value); |
| 443 | resolve(value); |
| 444 | }; |
| 445 | |
| 446 | const _reject = (reason) => { |
| 447 | done(reason, true); |
| 448 | reject(reason); |
| 449 | }; |
| 450 | |
| 451 | asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); |
| 452 | }); |
| 453 | }; |
| 454 | |
| 455 | const resolveFamily = ({ address, family }) => { |
| 456 | if (!utils.isString(address)) { |