Channel.select: Complain when given non-channel method promises.
This commit is contained in:
parent
b5c96177e4
commit
a2746f6e68
2 changed files with 29 additions and 15 deletions
38
lib/index.js
38
lib/index.js
|
@ -326,23 +326,31 @@ Channel.select = methodPromises =>
|
|||
Object.assign(
|
||||
new Promise((resolve, reject) => {
|
||||
methodPromises.forEach(async promise => {
|
||||
promise.prethen(() => {
|
||||
// We've been given a heads-up that this method will complete first so
|
||||
// cancel the other method calls.
|
||||
methodPromises.forEach(other => {
|
||||
if (other !== promise) {
|
||||
other.cancel();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
try {
|
||||
await promise;
|
||||
} catch (exception) {
|
||||
reject(exception);
|
||||
}
|
||||
promise.prethen(() => {
|
||||
// We've been given a heads-up that this method will complete first
|
||||
// so cancel the other method calls.
|
||||
methodPromises.forEach(other => {
|
||||
if (other !== promise) {
|
||||
other.cancel();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
resolve(promise.channel);
|
||||
try {
|
||||
await promise;
|
||||
} catch (exception) {
|
||||
reject(exception);
|
||||
}
|
||||
|
||||
resolve(promise.channel);
|
||||
} catch (exception) {
|
||||
reject(
|
||||
new TypeError(
|
||||
`Channel.select accepts only Channel method promises.`
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
}),
|
||||
{
|
||||
|
|
|
@ -128,6 +128,12 @@ describe(`Channel`, function() {
|
|||
closed
|
||||
);
|
||||
});
|
||||
|
||||
it(`complains when given non-channel method promises`, function() {
|
||||
assertRejects(async () => {
|
||||
await Channel.select([Promise.resolve()]);
|
||||
}, new TypeError(`Channel.select accepts only Channel method promises.`));
|
||||
});
|
||||
});
|
||||
|
||||
describe(`functional interface`, async function() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue