Plat 592 writable sources

Just to summarize our conversation: this implies that the referenced callback will continue to be valid after the call. It would be safer to new and copy the callback into the heap so that we fully own it which removes potentially hard to debug error.

That being said, if we decide to keep the current semantics then we should clearly document it.