channels/rail: improve callback interface