@@ -33,67 +33,58 @@ export async function sendFeedbackRequest(
3333 type : 'feedback' ,
3434 } ;
3535
36- return new Promise ( ( resolve , reject ) => {
37- withScope ( async scope => {
38- // No use for breadcrumbs in feedback
39- scope . clearBreadcrumbs ( ) ;
40-
41- if ( [ FEEDBACK_API_SOURCE , FEEDBACK_WIDGET_SOURCE ] . includes ( String ( source ) ) ) {
42- scope . setLevel ( 'info' ) ;
43- }
36+ return withScope ( async scope => {
37+ // No use for breadcrumbs in feedback
38+ scope . clearBreadcrumbs ( ) ;
39+
40+ if ( [ FEEDBACK_API_SOURCE , FEEDBACK_WIDGET_SOURCE ] . includes ( String ( source ) ) ) {
41+ scope . setLevel ( 'info' ) ;
42+ }
43+
44+ const feedbackEvent = await prepareFeedbackEvent ( {
45+ scope,
46+ client,
47+ event : baseEvent ,
48+ } ) ;
4449
45- const feedbackEvent = await prepareFeedbackEvent ( {
46- scope,
47- client,
48- event : baseEvent ,
49- } ) ;
50+ if ( ! feedbackEvent ) {
51+ return ;
52+ }
5053
51- if ( ! feedbackEvent ) {
52- resolve ( ) ;
53- return ;
54- }
54+ if ( client . emit ) {
55+ client . emit ( 'beforeSendFeedback' , feedbackEvent , { includeReplay : Boolean ( includeReplay ) } ) ;
56+ }
5557
56- if ( client . emit ) {
57- client . emit ( 'beforeSendFeedback' , feedbackEvent , { includeReplay : Boolean ( includeReplay ) } ) ;
58- }
58+ const envelope = createEventEnvelope ( feedbackEvent , dsn , client . getOptions ( ) . _metadata , client . getOptions ( ) . tunnel ) ;
5959
60- const envelope = createEventEnvelope (
61- feedbackEvent ,
62- dsn ,
63- client . getOptions ( ) . _metadata ,
64- client . getOptions ( ) . tunnel ,
65- ) ;
60+ let response : void | TransportMakeRequestResponse ;
6661
67- let response : void | TransportMakeRequestResponse ;
62+ try {
63+ response = await transport . send ( envelope ) ;
64+ } catch ( err ) {
65+ const error = new Error ( 'Unable to send Feedback' ) ;
6866
6967 try {
70- response = await transport . send ( envelope ) ;
71- } catch ( err ) {
72- const error = new Error ( 'Unable to send Feedback' ) ;
73-
74- try {
75- // In case browsers don't allow this property to be writable
76- // @ts -expect-error This needs lib es2022 and newer
77- error . cause = err ;
78- } catch {
79- // nothing to do
80- }
81- reject ( error ) ;
68+ // In case browsers don't allow this property to be writable
69+ // @ts -expect-error This needs lib es2022 and newer
70+ error . cause = err ;
71+ } catch {
72+ // nothing to do
8273 }
74+ throw error ;
75+ }
8376
84- // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore
85- if ( ! response ) {
86- resolve ( response ) ;
87- return ;
88- }
77+ // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore
78+ if ( ! response ) {
79+ return ;
80+ }
8981
90- // Require valid status codes, otherwise can assume feedback was not sent successfully
91- if ( typeof response . statusCode === 'number' && ( response . statusCode < 200 || response . statusCode >= 300 ) ) {
92- reject ( new Error ( 'Unable to send Feedback' ) ) ;
93- }
82+ // Require valid status codes, otherwise can assume feedback was not sent successfully
83+ if ( typeof response . statusCode === 'number' && ( response . statusCode < 200 || response . statusCode >= 300 ) ) {
84+ throw new Error ( 'Unable to send Feedback' ) ;
85+ }
9486
95- resolve ( response ) ;
96- } ) ;
87+ return response ;
9788 } ) ;
9889}
9990
0 commit comments