Suppose a plugin tries to make a call on a background thread that has no message loop, and provides a required completion callback. The call is not supposed to return synchronously, but I have no way of running the callback asynchronously on the correct thread.
The plugin made a mistake, but it's not clear what to do about it. I see three alternatives:
1) Run the callback on the main thread (my least favorite option).
2) Return PP_OK_COMPLETIONPENDING, but don't run the callback. Print a log message.
3) Return PP_ERROR_NO_MESSAGE_LOOP, don't run the callback.
I'm leaning towards 2 right now; it's the only behavior that doesn't break our interface contracts. But I could be swayed to do 3), since this is a real show-stopping error, and it might be more obvious this way.
Thoughts?