docs: def lazy_send(chainlet, chunks):
      """
      Canonical version of `chainlet_send` that always takes and returns an iterable
  
      :param chainlet: the chainlet to receive and return data
      :type chainlet: chainlink.ChainLink
      :param chunks: the stream slice of data to pass to ``chainlet``
      :type chunks: iterable
      :return: the resulting stream slice of data returned by ``chainlet``
      :rtype: iterable
      """
      fork, join = chainlet.chain_fork, chainlet.chain_join
      if fork and join:
          return _send_n_get_m(chainlet, chunks)
      elif fork:
          return _lazy_send_1_get_m(chainlet, chunks)
      elif join:
          return _lazy_send_n_get_1(chainlet, chunks)
      else:
          return _lazy_send_1_get_1(chainlet, chunks)