message: Fix bug where spans were sometimes not popped on exit
diff: @@ -229,23 +229,24 @@ impl Span {
  }
  pub fn enter<F: FnOnce() -> T, T>(&self, f: F) -> T {
  - CURRENT_SPAN.with(|current_span| {
  + let result = CURRENT_SPAN.with(|current_span| {
  if *current_span.borrow() == *self || current_span.borrow().parents().any(|span| span == self) {
  return f();
  }
  current_span.replace(self.clone());
  Dispatcher::current().enter(&self, Instant::now());
  + f()
  + });
  - let result = f();
  -
  + CURRENT_SPAN.with(|current_span| {
  if let Some(parent) = self.parent() {
  current_span.replace(parent.clone());
  Dispatcher::current().exit(&self, Instant::now());
  }
  + });
  result
  - })
  }
  pub fn debug_fields<'a>(&'a self) -> DebugFields<'a, Self> {
  