• (put! port val)
  • (put! port val fn1)
  • (put! port val fn1 on-caller?)
Asynchronously puts a val into port, calling fn1 (if supplied) when
 complete, passing false iff port is already closed. nil values are
 not allowed. If on-caller? (default true) is true, and the put is
 immediately accepted, will call fn1 on calling thread.
  fn1 may be run in a fixed-size dispatch thread pool and should not
 perform blocking IO, including core.async blocking ops (those that
 end in !!).
  Returns true unless port is already closed.