It's very easy in the course of coding to use a suspending function inside a defn. This can lead to Suspend signals being returned as values, which is undefined and ends up being a tricky bug to track down.
Proposal is to deprecate use of ^:suspending metadata and instead implement a macro which registers suspending functions in a dynamic variable accessible to the partitioner.
(def-suspending-fn foo [bar]
(if bar (listen! ...)))
(foo true) => Exception!!!
(deflow baz []
(foo true) ; suspends
...)