`withCtx` is only needed for wrapping possibly stream-creating user-supplied behavior, while `p` is just a message, so this can go