如何解决@ twilio / conversations JS SDK客户端未处理的拒绝,令牌已过期
有人可以指出如何正确处理@twilio/conversations Client.create
错误而不必使用处理unhandledrejection
事件:
import { Client as ConversationsClient } from "@twilio/conversations";
// ...
try {
this.conversationsClient = await ConversationsClient.create('expired token');
} catch (err) {
// err: Unable to connect: Access Token expired or expiration date invalid
console.error(err);
return;
}
// but later results in an unhandled rejection
我已经找到了代码:
// simplified stack trace (reversed):
ConversationsClient.create()
// browser/client.js:
new Client()
_this.sessionPromise = _this.services.session.initialize();
this.services.syncClient.list()
twilio-sync/lib/client.js:
this._createList()
this.services.network.post(this.services.config.listsUri,requestBody).then(response => response.body);
// POST to https://cds.us1.twilio.com/v3/Lists
// which is implemented as:
return this.executeWithRetry(() => this.transport.post(uri,headers,body),retryWhenThrottled);
executeWithRetry(request,retryWhenThrottled = true) {
return new Promise((resolve,reject) => {
let codesToRetryOn = [502,503,504];
if (retryWhenThrottled) {
codesToRetryOn.push(429);
}
let retrier = new operation_retrier_1.Retrier(this.backoffConfig());
retrier.on('attempt',() => {
request()
.then(result => retrier.succeeded(result))
.catch(err => {
if (codesToRetryOn.includes(err.status)) {
let delayOverride = parseInt(err.headers ? err.headers['Retry-After'] : null);
retrier.failed(mapTransportError(err),isNaN(delayOverride) ? null : delayOverride * 1000);
}
else if (err.message === 'Twilsock disconnected') {
// Ugly hack. We must make a proper exceptions for twilsock
retrier.failed(mapTransportError(err));
}
else {
// Fatal error
retrier.removeAllListeners();
retrier.cancel();
reject(mapTransportError(err)); // THIS IS UNHANDLED
}
});
});
我当然不会故意这样做,但是经历了这一点后,我如何确定图书馆不会拒绝其他地方的承诺?
复制步骤:
- 获取对话演示
git clone git@github.com:TwilioDevEd/conversations-demo.git
- 将myToken设置为过期的
- 打开localhost:3000并登录
受影响的版本:1.1.0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。