summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-10-26 22:16:41 +0200
committerGitHub <noreply@github.com>2023-10-26 14:16:41 -0600
commit96ce9cdb17f6ed2dc449754d762ecccbd98e4814 (patch)
treed23a5af77127faee0f99af06d9db7d617edeb162
parent347c22dd5eebe6206f26e2cc1312f383cb011a9b (diff)
refactor: op_sleep uses op2 macro (#20908)
Signed-off-by: Matt Mastracci <matthew@mastracci.com> Co-authored-by: Matt Mastracci <matthew@mastracci.com>
-rw-r--r--ext/web/timers.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/web/timers.rs b/ext/web/timers.rs
index 7c83e8f37..6b00296ff 100644
--- a/ext/web/timers.rs
+++ b/ext/web/timers.rs
@@ -79,13 +79,17 @@ pub fn op_timer_handle(state: &mut OpState) -> ResourceId {
/// [`TimerHandle`] resource given by `rid` has been canceled.
///
/// If the timer is canceled, this returns `false`. Otherwise, it returns `true`.
-#[op2(async(deferred), fast)]
+#[op2(async(lazy), fast)]
pub async fn op_sleep(
state: Rc<RefCell<OpState>>,
- #[number] millis: u64,
+ #[smi] millis: u64,
#[smi] rid: ResourceId,
) -> Result<bool, AnyError> {
- let handle = state.borrow().resource_table.get::<TimerHandle>(rid)?;
+ // If the timer is not present in the resource table it was cancelled before
+ // this op was polled.
+ let Ok(handle) = state.borrow().resource_table.get::<TimerHandle>(rid) else {
+ return Ok(false);
+ };
// If a timer is requested with <=100ms resolution, request the high-res timer. Since the default
// Windows timer period is 15ms, this means a 100ms timer could fire at 115ms (15% late). We assume that