On Sun, Dec 18, 2022 at 1:57 AM Stefan Monnier wrote: > I guess you can see it that way too. So there are two ways to solve > > this: > > > > * only process-send-input in process filters makes sense > > * all but process-send-input in process filters makes sense > > I assume you meant to write `process-send-string`, but I don't know what > you mean by the above (I understand neither bullets). > Yes, it's process-send-string. I talked earlier about how I think sit-for and accept-process-output are two primitives that could just error when called from within a process filter, because there's no possible reasonable use for them, because they lead to recursive filters and recursive filters are arguably "unreasonable". But process-send-string (without output-acceptance) in a filter makes sense. That's the first bullet. The other bullet is that a-p-output and sit-for and even recursive filters may make sense (if you know what you are doing, i suppose), but the common case of sending a follow up message to a process (as a direct consequence of the output just received) should _not_ be handled with an in-filter p-s-string, but with something else, like the run-at-timer idea. In that case we can keep process-send-string's output acceptance. > > I'm more into of the first persuasion, but I think it shouldn't allow > > output to be accepted when called from within a process filter. > > Indeed, as a general rule doing a "blocking wait", such as > `accept-process-output` from within async code (process filter, timer, > etc..) is generally undesirable. > I agree, but process-send-string is never blocking, is it? And anyway if we go your 'spawn' or 'run-asap' way, we don't need to change process-send-string's output-acceptance semantics at all. João