Well, it is a public function.  I get what you mean, but the point here was to make a function that would perform those extra sanity checks and kill the whole thing if 'other' wasn't writable.

I guess when the time comes we could also add a 'request_proposal()' with no 'other' argument to do the same, instead of going through 'propose_pending()' -- possibly adding new checks and/or features.

We could do that now, but aside from future expansion I don't really see the point right now.  Anyway, no strong feelings either way; reworking this bit wouldn't take long.