@@ -151,6 +151,32 @@ jerry_port_get_native_module (jerry_value_t name) /**< module specifier */
151151}
152152```
153153
154+ ## Promise
155+
156+ ```c
157+ /**
158+ * HostPromiseRejectionTracker operations
159+ */
160+ typedef enum
161+ {
162+ JERRY_PROMISE_REJECTION_OPERATION_REJECT, /**< promise is rejected without any handlers */
163+ JERRY_PROMISE_REJECTION_OPERATION_HANDLE, /**< handler is added to a rejected promise for the first time */
164+ } jerry_promise_rejection_operation_t;
165+
166+ /**
167+ * Track unhandled promise rejections.
168+ *
169+ * Note:
170+ * This port function is called by jerry-core when JERRY_BUILTIN_PROMISE
171+ * is enabled.
172+ *
173+ * @param promise rejected promise
174+ * @param operation HostPromiseRejectionTracker operation
175+ */
176+ void jerry_port_track_promise_rejection (const jerry_value_t promise,
177+ const jerry_promise_rejection_operation_t operation);
178+ ```
179+
154180## Date
155181
156182``` c
@@ -392,3 +418,32 @@ void jerry_port_sleep (uint32_t sleep_time)
392418} /* jerry_port_sleep */
393419#endif /* defined (JERRY_DEBUGGER) && (JERRY_DEBUGGER == 1) */
394420```
421+
422+ ## Promise
423+
424+ ``` c
425+ #include " jerryscript-port.h"
426+
427+ /* *
428+ * Default implementation of jerry_port_track_promise_rejection.
429+ * Prints the reason of the unhandled rejections.
430+ */
431+ void
432+ jerry_port_track_promise_rejection (const jerry_value_t promise, /** < rejected promise * /
433+ const jerry_promise_rejection_operation_t operation) /** < operation * /
434+ {
435+ (void) operation; /* unused * /
436+
437+ jerry_value_t reason = jerry_get_promise_result (promise);
438+ jerry_value_t reason_to_string = jerry_value_to_string (reason);
439+ jerry_size_t req_sz = jerry_get_utf8_string_size (reason_to_string);
440+ jerry_char_t str_buf_p[ req_sz + 1] ;
441+ jerry_string_to_utf8_char_buffer (reason_to_string, str_buf_p, req_sz);
442+ str_buf_p[ req_sz] = '\0';
443+
444+ jerry_release_value (reason_to_string);
445+ jerry_release_value (reason);
446+
447+ printf ("Uncaught (in promise) %s\n", str_buf_p);
448+ } /* jerry_port_track_promise_rejection * /
449+ ```
0 commit comments