catchがエラーオブジェクトではなくオブジェクトを返すのはなぜですか?
これは、このライブラリが基づいているAngularの$ httpで行われる方法です。 多かれ少なかれそれはアーティファクトであり、必ずしも正しい方法ではありません。 Error
が使用され、必要に応じて応答の詳細が添付されている、より一貫性のあるエラーパスに移動したいと思います。
function createError(message, details) {
var err = new Error(message);
Object.keys(details, function (key) {
err[key] = details[key];
});
return err;
}
createError('timeout of ' + config.timeout + 'ms exceeded', {
code: 'ECONNABORTED',
config: config
});
また、HTTPステータスコードに関係なく、実際のエラーが発生したときにのみPromise
拒否するようにlibを変更したいと思います。 現在、200〜300の範囲外のものはすべて拒否されます。
@mzabriskie
また、構成フラグを使用して、2xx / 3xx以外の応答が返されたときに実行するアクションを決定することも検討できます。
request-promise
libは、これにsimple
フラグ/オプションを使用します。 simple
がtrue
場合、request-promiseはネットワーク以外のエラー(2xx、3xx)を拒否します。 フラグがfalseの場合、フラグは何も拒否せず、ユーザーの責任になります。 これは非常に便利で、両方の設定を使用するアプリケーションがあることがわかりました。 通常、デフォルトのIMOの方が優れているため、単純にtrue
設定していると思います。
https://github.com/request/request-promise#get -a-rejection-only-if-the-request-failed-for-technical-reasons
#24の複製として閉じる
最も参考になるコメント
これは、このライブラリが基づいているAngularの$ httpで行われる方法です。 多かれ少なかれそれはアーティファクトであり、必ずしも正しい方法ではありません。
Error
が使用され、必要に応じて応答の詳細が添付されている、より一貫性のあるエラーパスに移動したいと思います。また、HTTPステータスコードに関係なく、実際のエラーが発生したときにのみ
Promise
拒否するようにlibを変更したいと思います。 現在、200〜300の範囲外のものはすべて拒否されます。