Plat 592 writable sources

Blocking is not possible because the interface doesn't provide any notification when the queue becomes ready so you're stuck either spinning or sleeping periodically. Both these are bad. 

Also, the function needs to be renamed since it's not consistent with the rest of the interface. isReadyForWritting or something along those lines makes it much more clear that the function is linked to the write function is some way.

Better yet, why not have write queue the message until the source is ready for writing? Why force the complexity on the user when all the mechanic is already there to handle this properly? You can then add a tryWrite function which returns false if something iffy happens.