Shift should be faster then splice maybe add ShiftingQueue to the pull instead of changing the SplicingQueue Also all the Queues that uses undefined should rest when the Queue is empty.