Pipelet.set_source(): connect source and destination only after fetching data; use duck typing for source.fetch()