Uses str as a user input, either evaluating str with do-eval or placing it into the input port with read-avail, depending on whether a read is currently blocked or not.