Here's my issue with this kind of "magic" API design:<p>It's not clear when or how serialization happens.<p>Supposedly at some point the message I am sending to the worker is serialized, but this is not made clear to the user and it's not made clear <i>when</i> this happens.<p>A well-designed library would synchronously serialize the given object the moment it is passed in or let the user explicitly handle serialization. But I don't think that's what is happening here.<p>It appears messages are serialized only eventually and when they are finally sent off to a worker.<p>If you accidentally pass mutable state in here, you're in for a really confusing and fun debugging session. Likely it'll be a production-only bug too, because during development and testing you're unlikely to have the kind of message volume required to run into some modified-before-sent condition.<p>CTRL-F "mutable" and CTRL-F "serialize" gives no results, so I don't think the designers thought of this or thought to warn users.