swap data/error around
create serial queue if needed
cleanup