message: move backtrace capture outside of async task's scope, capturing the caller
diff: @@ -176,12 +176,14 @@ impl<T: 'static + Send> Responder<T> {
  impl<T> Responder<T> {
  /// Send `data` to the origin of the request.
  - pub(crate) async fn respond(mut self, data: T) {
  + pub(crate) fn respond(mut self, data: T) -> impl Future {
  + let caller_backtrace = backtrace::Backtrace::new();
  + async move {
  if let Some(sender) = self.0.take() {
  if sender.send(data).is_err() {
  - let backtrace = backtrace::Backtrace::new();
  error!(
  - ?backtrace,
  + responder = ?self,
  + ?caller_backtrace,
  "could not send response to request down oneshot channel"
  );
  }
  @@ -190,6 +192,7 @@ impl<T> Responder<T> {
  }
  }
  }
  +}
  impl<T> Debug for Responder<T> {
  fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
  