Change 'recv' methods so they look closer to a promise