Try core.async