@@ -48,17 +48,17 @@ void handle_timer_event(uv_timer_t* handle) {
4848 lean_uv_timer_object * timer = lean_to_uv_timer (obj);
4949
5050 // handle_timer_event may only be called while the timer is running. The promise can be NULL
51- // if it the last promise was cancelled.
51+ // if the last promise was cancelled.
5252 lean_assert (timer->m_state == TIMER_STATE_RUNNING);
5353
5454 if (timer->m_repeating ) {
55- // For repeating timers, only resolve if promise exists and is not finished
55+ // For repeating timers, only resolves if the promise exists and is not finished
5656 if (timer->m_promise != NULL && !timer_promise_is_finished (timer)) {
5757 lean_object* res = lean_io_promise_resolve (lean_box (0 ), timer->m_promise , lean_io_mk_world ());
5858 lean_dec (res);
5959 }
6060 } else {
61- // For non-repeating timers, resolve if promise exists
61+ // For non-repeating timers, resolves if the promise exists
6262 if (timer->m_promise != NULL ) {
6363 lean_assert (!timer_promise_is_finished (timer));
6464 lean_object* res = lean_io_promise_resolve (lean_box (0 ), timer->m_promise , lean_io_mk_world ());
@@ -156,24 +156,24 @@ extern "C" LEAN_EXPORT lean_obj_res lean_uv_timer_next(b_obj_arg obj, obj_arg /*
156156 if (timer->m_promise != NULL ) {
157157 lean_dec (timer->m_promise );
158158 }
159- timer->m_promise = create_promise ();
160159
161- lean_inc (timer->m_promise );
162- return lean_io_result_mk_ok (timer->m_promise );
163- } else {
164- lean_inc (timer->m_promise );
165- return lean_io_result_mk_ok (timer->m_promise );
160+ timer->m_promise = create_promise ();
166161 }
162+
163+ lean_inc (timer->m_promise );
164+ return lean_io_result_mk_ok (timer->m_promise );
167165 }
168166 case TIMER_STATE_FINISHED:
169167 {
170168 if (timer->m_promise != NULL ) {
171169 lean_inc (timer->m_promise );
172170 return lean_io_result_mk_ok (timer->m_promise );
173171 } else {
172+ // Creates a resolved promise
174173 lean_object* finished_promise = create_promise ();
175174 lean_object* res = lean_io_promise_resolve (lean_box (0 ), finished_promise, lean_io_mk_world ());
176175 lean_dec (res);
176+ timer->m_promise = finished_promise;
177177 return lean_io_result_mk_ok (finished_promise);
178178 }
179179 }
0 commit comments