When I say `mixed`, I mean `mixed`. `@return mixed` can only be interpreted as *unknown* or *whatever* (not talking about the official PHP doc, which unfortunately often sticks to this unfortunate convention). `string|resource|Iterator` is therefore *not* `mixed`, and AFAIK this is the first time you mention this return type. And I still think that this approach is much worse for a standard, as it shifts the responsibility of playing with `if() ... else ...` to the user, which is the problem *abstraction* has been invented to solve.

Now about `Iterator`, it's been designed to iterate over collections of variables. Considering a stream as a collection of strings is a point of view, but this looks really weird to me. And you won't have a method like `read($nBytes)`, you will be forced to always read the same number of bytes on every iteration, as `Iterator::current()`doesn't take parameters. What your comments demonstrate though, is that this `StreamableInterface` is a missing SPL interface, and it's not a bad thing if it's brought by this PSR IMO. Although, now that I think about it, it would be better off in a PSR of its own.